如何延迟服务中的执行?

时间:2015-09-23 14:33:11

标签: java android android-service

我有一个Android服务,它扩展了我调用的IntentService:

  @Override
  protected void onHandleIntent(Intent intent) {
    new Handler().postDelayed(new Runnable() {

      @Override
      public void run() {
        // Start your app main activity
      }
    }, LaunchActivity.SPLASH_TIME_OUT);
  }

以前的代码在Activity中运行良好,但从不在Service方法中调用run()方法。

如何延迟服务中的执行?

1 个答案:

答案 0 :(得分:1)

当您在Handler中创建onHandleIntent时,它与与IntentService关联的工作线程相关联。根据{{​​3}},如果没有其他待处理请求,系统会在IntentService返回时自动终止onHandleIntent。我的猜测是系统确定在您从onHandleIntent返回时已处理所有请求并终止工作线程,即使该工作线程的工作队列仍有延迟工作。

您应该能够通过在主线程上运行的服务生命周期方法中调用代码来测试此假设,例如: onStartCommand。假设您的应用程序在调用代码和指定的延迟之间的时间范围内没有被系统杀死,并且代码可以执行,那么您面临的问题很可能与工作线程的过早终止有关。排队Runnable。只要您的应用程序保持活动状态,主循环就会保持活动状态,因此您的代码最终应该在使用主循环器排队时运行。请参阅the documentation的答案和评论。