安卓 - 从服务更新进度条,有可能



我正在尝试从服务更新进度条。我不知道这是否是正确的方法,但我必须这样做。在服务中,我正在尝试上传图像,它将返回通知栏的进度。现在,我想添加一个进度条作为指示器,并删除通知栏中的通知。

这些是我用来调用进度条的代码

LayoutInflater inflater = (LayoutInflater) getApplicationContext()
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View v = inflater.inflate(R.layout.fragment_doc, null);
    progressBar = (ProgressBar) v.findViewById(R.id.imgProgressBar);

它不会返回任何错误,但是当我尝试更新进度栏时

progressBar.setProgress(progress(

什么都没发生..我该怎么办,我的代码有什么问题吗?

将不胜感激任何意见。谢谢

更新

进度条不是正确的方法...您应该使用广播接收器根据服务更新您的活动或片段

从服务,你应该发送广角广播

 Intent broadcastIntent = new Intent();
        broadcastIntent.setAction(ACTION_NAME);       
        sendBroadcast(broadcastIntent);

对于活动或狂热

private MyBroadRequestReceiver receiver;

在创建

IntentFilter filter = new IntentFilter(ACTION_NAME);
 receiver = new MyBroadRequestReceiver();
registerReceiver( receiver, filter);

 @Override
    public void onDestroy() {
        this.unregisterReceiver(receiver);
        super.onDestroy();
    }

在要更新进度条的活动或片段中

public class MyBroadRequestReceiver extends BroadcastReceiver{
        @Override
        public void onReceive(Context context, Intent intent) {
         //update your progressbar here
        }

    }

服务没有 UI
所以如果你想在服务和UI(活动(之间进行通信

你应该使用BroadCast

在您的服务中,您可以添加此

Intent intent = new Intent("Actionname");
            intent.putExtra("....",.......);
            intent.putExtra(".",...);
            LocalBroadcastManager.getInstance(getApplicationContext()).sendBroadcast(intent);

和在您的活动中

private class BroadcastReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
             if(intent.getAction().equalsIgnoreCase("reciverlocation"))
            {  // what you wane to do
}}

并且不要忘记在清单中添加接收器

如果您的活动正在运行,您可以使用相同的interface -

第 1 步:在service中定义接口 -

public interface OnProgressUpdateListener {
    void onProgressUpdate(int progress);
}

第 2 步:为侦听器创建 setter -

private static OnProgressUpdateListener progressListener;
public static void setOnProgressChangedListener(OnProgressUpdateListener _listener) {
        progressListener = _listener;
}

第 3 步:将listener实施到您的"活动中">

MyService.setOnProgressChangedListener(this);
@Override
public void onProgressUpdate(int progress) {
    // Do update your progress...
}

PS,不要忘记将其设置为null..因为它是static

@Override
public void onDestroy() {
    super.onDestroy();
    MyService.setOnProgressChangedListener(null);
}

相关内容

  • 没有找到相关文章

最新更新