Android - 如何在服务运行时显示进度对话框?

时间:2016-04-10 20:43:32

标签: android service

我想创建一个服务,从web下载内容,我想在执行时显示进度对话框。我知道如何使用asynctask和volley的进度对话框,但在这里我不知道,现在我可以在UI线程上通知服务结束时使用服务。

我该如何做到这一点?

代码正在关注

public class MainActivity extends Activity {

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

}

public void onClickStart(View v) {
  startService(new Intent(this, MyService.class));
}

public void onClickStop(View v) {
  stopService(new Intent(this, MyService.class));
}

}


public class MyService extends Service {

  public void onCreate() {
    super.onCreate();
  }

  public int onStartCommand(Intent intent, int flags, int startId) {
    Log.d(LOG_TAG, "onStartCommand");
    someTask();
    return super.onStartCommand(intent, flags, startId);
  }

  public void onDestroy() {
    super.onDestroy();
  }

  public IBinder onBind(Intent intent) {
    return null;
  }

  void someTask() {
    new Thread(new Runnable() {
      public void run() {
        for (int i = 1; i<=5; i++) {
          Log.d(LOG_TAG, "i = " + i);
          try {
            TimeUnit.SECONDS.sleep(1);
          } catch (InterruptedException e) {
            e.printStackTrace();
          }
        }
        stopSelf();
      }
    }).start();
  }

1 个答案:

答案 0 :(得分:0)

服务和活动之间有不同的通信方式。

您可以从服务发送广播,并使用BroadcastReceiver在活动中处理它。

或者您也可以绑定服务并在服务完成任务后发回任何命令。