android - 使 IntentService 在执行 handler.postDelayed runnable 之前不会休眠

标签 android multithreading intentservice postdelayed

在我的 IntentService 类的 onHandleIntent 中,我创建了包含一个可运行的句柄,该句柄应在 20 秒后完成。不幸的是,我的服务在此期间之前 sleep 或被破坏。 我也尝试过使用 CountDownTimer,但遇到了同样的问题。 有人知道我可以让 onHnadleIntent 等待吗?谢谢!

这是代码:

 public class MyService extends IntentService {
    //...
    @Override
    protected void onHandleIntent(Intent workIntent) {
        Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            Log.i("20 seconds later","I am here");
            }
        }, 20000);
        //...
   }
   //...
}

最佳答案

不要使用IntentService。它不是为您的场景设计的。使用常规服务。将代码放入 onStartCommand() 中。在 run() 方法的底部,对 Service 实例调用 stopSelf() 将其关闭。

关于android - 使 IntentService 在执行 handler.postDelayed runnable 之前不会休眠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21407161/

相关文章:

c# - Java 或 C# 的线程是基于用户空间线程还是内核空间线程?

android - 在此特殊设置中,此类何时符合 gc 的条件

Android GCM 向服务器发送 token

android - addView 不起作用(RelativeLayout)

android - 如何在没有服务器的情况下通过套接字连接两个 Android 设备

c# - 线程同步

java - 我怎样才能捕捉到另一个线程异常

android - 在 Android 中下载一个或多个文件的最佳做法是什么...?

android - 在 WebView 中获取文档位置?

android - phonegap 1.7 notificationCallback(此函数 this.sendJavascript(js))不起作用