我正在使用处理程序在onCreate内调用Runnable,并希望通过在onCreate之外使用onBackPressed来停止它。如何在onCreate之外停止Runnable函数?
我尝试在onCreate之外重写Runnable,但是它无法正常工作。
protected void onCreate(Bundle savedInstanceState) {
define Runnable and start Runnable
}
@Override
public void onBackPressed() {
stop Runnable
}
我希望onBackPressed可以在onCreate之外停止Runnable。
答案 0 :(得分:2)
您可以通过删除回调来停止任何可运行的程序,使用
handler.removeCallbacks(runnableRunner);
如果要删除所有活动的回调,请使用
handler.removeCallbacksAndMessages(null);
答案 1 :(得分:1)
在MainThread上运行耗时超过几毫秒的Runnable是错误的,因为它冻结了接口。如果您的Runnable在其他线程中运行,则只需要向该特定线程发送“ mThread.interrupt()”命令以终止该线程即可。如果您不希望终止另一个线程,则必须在该线程中实现Messages,然后将特定的Message发送到其Handler。
答案 2 :(得分:0)
您可以通过以下方式停止可运行:-
mHandler.removeCallbacks(可运行);