一开始,我想为我糟糕的英语道歉。
有我的问题:
在计时器下方每隔3秒显示一条消息,但是当我从程序中退出时(使用后退按钮),消息仍会弹出。
public Runnable mUpdateTimeTask = new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
while (true) {
try {
Thread.sleep(3000);}
catch (Exception e) {
// TODO: handle exception
}
mHandler.post(new Runnable(){
@Override
public void run() {
Toast.makeText(getApplicationContext(), "Testing 3 Seconds", Toast.LENGTH_LONG).show();
}
});
}
}
};
我已经使用mHandler.removeCallbacks(mUpdateTimeTask);
仍然无法阻止它。
提前致谢。
答案 0 :(得分:0)
调用是从可运行的线程类进行的,当按下“返回”按钮时,该类仍处于活动状态。它将弹出消息,直到应用程序销毁。 相反,使用这个:
handler.removeCallbacksAndMessages(null);
在removeCallbacksAndMessages的文档中说。链接在这里: developer website documentation link
“删除任何待处理的回调帖子并发送其obj为令牌的邮件。如果令牌为空,则将删除所有回调和邮件。”
答案 1 :(得分:0)
我最近遇到了同样的问题,经过大量搜索后,我找到了解决方案here。
handler.removeCallbacksAndMessages(null);
只会停止待处理的消息(Runnables)。它不适用于当前运行的runnable。您必须编写自己的类来停止当前运行的runnable。