如果我的handler.postDelayed
线程已经执行并且我需要取消它会怎么样?
答案 0 :(得分:66)
我这样做取消postDelays,根据Android:removeCallbacks删除消息队列中任何待处理的Runnable r帖子。
handler.removeCallbacks(runnableRunner);
或用于删除所有邮件和回调
handler.removeCallbacksAndMessages(null);
答案 1 :(得分:11)
如果您不想保留runnable的引用,可以直接致电:
handler.removeCallbacksAndMessages(null);
...如果token为null,则将删除所有回调和消息。
答案 2 :(得分:0)
我有一个实例,我需要在运行过程中取消postDelayed,因此上面的代码对我的示例不起作用。我最终做的是在我的Runnable中进行布尔检查,所以当在给定时间之后执行代码时,它将根据当时的布尔值触发并且对我有效。
public static Runnable getCountRunnable() {
if (countRunnable == null) {
countRunnable = new Runnable() {
@Override
public void run() {
if (hasCountStopped)
getToast("The count has stopped");
}
};
}
return countRunnable;
}
仅供参考 - 在我的活动中,我会使用其他开发人员建议的代码,handler.removecallback和handler = null;取消手柄只是为了保持代码清洁,并确保一切都将被删除。