如果服务未完成,我会创建 1 分钟的延迟计时器来关闭服务。看起来像这样:
private Handler timeoutHandler = new Handler();
onCreate() 内部
timeoutHandler.postDelayed(new Runnable()
{
public void run()
{
Log.d(LOG_TAG, "timeoutHandler:run");
DBLog.InsertMessage(getApplicationContext(), "Unable to get fix in 1 minute");
finalizeService();
}
}, 60 * 1000);
如果我在这 1 分钟之前完成工作 - 我想取消这个延迟的事情,但不确定如何取消。
最佳答案
你不能真正使用匿名 Runnable 来做到这一点。将 Runnable 保存到命名变量怎么样?
Runnable finalizer = new Runnable()
{
public void run()
{
Log.d(LOG_TAG, "timeoutHandler:run");
DBLog.InsertMessage(getApplicationContext(), "Unable to get fix in 1 minute");
finalizeService();
}
};
timeoutHandler.postDelayed(finalizer, 60 * 1000);
...
// Cancel the runnable
timeoutHandler.removeCallbacks(finalizer);
关于android - 如何在 Android 代码中提前取消处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5885587/