【发布时间】:2021-11-19 20:19:42
【问题描述】:
调用方法 handler.removeMessagesAndCallbacks(null) 会停止所有尚未执行的处理程序(延迟后)。但我需要一种方法,我找不到哪个中断已经运行的处理程序。
线程可以在执行时被中断。处理程序也可以像线程一样被中断吗?
这里是一个例子:
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
> ...
}, 0);
handler.postDelayed(new Runnable() {
> ...
}, 1000);
@Override
protected void onPause() {
> super.onPause();
> handler.removeMessagesAndCallbacks(null);
}
1000 的延迟后处理程序被取消,但另一个处理程序在调用 onPause() 时仍在执行,此时已经运行。
我可以取消已经执行的处理程序吗?有比重写 Runnable 或 Handler 类更简单的机会吗?如果没有,有人可以告诉我如何覆盖,只是为了取消处理程序中的可运行对象?
在我的例子中,处理程序正在执行延迟后的动画。我不能以编程方式取消每一个动画。可运行(处理程序)应该被取消,包括动画也应该被取消。谢谢!
【问题讨论】:
标签: java android handler onpause