android:停止处理程序

时间:2012-12-16 17:34:30

标签: java android handler

我正在制作应用并使用处理程序。在A类中,显示一些带有文本的按钮,然后使用

handler.postDelayed(new Runnable(){@Override public void run() {blankbutton();}}, 10000); 

这样当通过10秒时,按钮上的文字将被删除。

但是,如果用户此时按下复位按钮(在另一个班级中),比如说,在处理程序计算时间后3秒,那么将在按下复位后的7秒内发生的事情将是按钮上的文本擦除:处理程序不会停止。

如何在另一个类中停止处理程序(在重置类中)?我已经检查了一些类似的问题,答案是

handler.removeCallbacks(Runnable);

但是,在重置课程下,它会显示“Runnable cannot be resolved to a variable

非常感谢!!

1 个答案:

答案 0 :(得分:2)

您的问题是您正在创建一个匿名的内部Runnable对象。当您尝试删除回调时,您将无法引用它。这样的事情会使它发挥作用:

Runnable txtClearRun = new Runnable(){
  public void run() {
    blankbutton();
  }
};
handler.postDelayed(txtClearRun, 10* 1000);
.
.
.
handler.removeCallbacks(txtClearRun);

不同之处在于,您可以通过这种方式将runnable对象分配给变量txtClearRun,以便以后在想要将其传递给removeCallbacks();