我正在制作一个应用程序并使用处理程序。在A类中,显示一些带文字的按钮,然后使用
handler.postDelayed(new Runnable(){@Override public void run() {blankbutton();}}, 10000);
这样,经过 10 秒后,按钮上的文本就会被删除。
但是,如果用户此时按下重置按钮(在另一个类中),例如,在处理程序计数时间后 3 秒后,那么将发生的情况是,按下重置后 7 秒,按钮上的文本将是已删除:处理程序不会停止。
如何停止另一个类中的处理程序(在重置类中)?我检查过一些类似的问题,答案是
handler.removeCallbacks(Runnable);
但是,在重置类下,它显示“Runnable 无法解析为变量
”
非常感谢!!
最佳答案
您的问题是您正在创建一个匿名内部 Runnable 对象。当您尝试删除回调时,您将无法引用它。像这样的东西就会让它工作:
Runnable txtClearRun = new Runnable(){
public void run() {
blankbutton();
}
};
handler.postDelayed(txtClearRun, 10* 1000);
.
.
.
handler.removeCallbacks(txtClearRun);
不同之处在于,通过这种方式,您可以将可运行对象分配给变量 txtClearRun
,以便稍后在您想要将其传递给 removeCallbacks( );
关于java - android:停止处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13903771/