final Handler handler = new Handler();
LOG.d("delay");
handler.postDelayed(new Runnable() {
@Override public void run() {
LOG.d("notify!");
//calling some methods here
}
}, 2000);
"delay" 在日志中确实显示了,但其他代码完全没有执行。而且在 run()
方法中调用的方法也完全没有被执行。请问有谁能帮忙解释一下为什么会出现这种情况吗?我做错了什么吗?
拥有该代码的类扩展了 IntentService,这会有问题吗?
============================
更新:
我把这段代码放在扩展了 IntentService
的类中。我发现它只能在构造函数中运行。但我需要将其放在 onHandleIntent
方法中。所以我查看了 onHandleIntent
的文档, 文档中说:
此方法在工作线程上被调用以处理请求。每次只处理一个 Intent,但处理过程在独立于其他应用程序逻辑的工作线程上运行。因此,如果此代码需要很长时间,它将阻止对同一 IntentService 的其他请求,但不会阻止任何其他事情。当处理完所有请求后,IntentService 会停止自身,因此您不应调用 stopSelf。
基于我得到的结果,我觉得我不能在“工作线程”中使用 postDelayed
。但是有人可以更详细地解释一下吗,比如为什么它在工作线程中不能工作?提前感谢您的回答。
os.Handler
是从哪里导入的? - N J