Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何延迟服务中的执行?_Java_Android_Android Service - Fatal编程技术网

Java 如何延迟服务中的执行?

Java 如何延迟服务中的执行?,java,android,android-service,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 } }, LaunchA

我有一个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);
  }
前一个代码在活动中工作正常,但在服务方法中从未调用
run()
方法


如何延迟服务中的执行?

当您创建
处理程序作为
OnHandleContent
的一部分时,它绑定到与
IntentService
关联的工作线程。根据,如果没有其他未决请求,则当
onHandleIntent
返回时,系统自动终止
IntentService
。我的猜测是,当您从
onHandleIntent
返回时,系统确定所有请求都已得到处理,并终止工作线程,即使该工作线程的工作队列上仍有延迟的工作


您应该能够通过在主线程上运行的服务生命周期方法(例如,
onStartCommand
)中调用您的代码来测试这一假设。假设您的应用程序在调用代码和指定延迟之间的时间段内没有被系统终止,并且代码开始执行,那么您面临的问题很可能与将
Runnable
排入队列的工作线程提前终止有关。只要应用程序保持活动状态,主循环器就会保持活动状态,因此,当使用主循环器排队时,代码最终应该运行。请参阅的答案和注释。

您可以与服务共享代码吗?在我看来,您可以阅读以下链接,因为没有更多代码。我只想延迟服务中的执行。我该怎么做呢?您需要显示此代码驻留在什么(生命周期)方法中。或者它是现场初始化的一部分?您还需要澄清调用此代码的线程。处理程序绑定到创建它的线程。@JanusVarmarken请参阅我的编辑。它位于
OnHandleContent
中。活套是如何工作的?oyu能举个例子吗?你不一定需要理解Looper来执行所描述的测试。您只需在主线程上运行代码(new Handler().postDelayed(…)。但是,作为参考,我不需要做这个测试。这就是我所知道的问题。如果答案有助于你确定你的问题,请表现得绅士一点,并将其标记为已接受的答案;)。你没有解决我的问题。如何延迟服务中的某些内容?