我有一个在线程中运行的Timer。这是代码:
timer = new Timer();
start_timer = new Thread(new Runnable() {
public void run() {
timer.schedule(new TimerTask() {
@Override
public void run() {
myHandler.post(new Runnable() {
public void run() {
Log.e("asd", String.valueOf(tmp_chiamata_id));
//do somethings
Toast.makeText(getApplicationContext(), start_timer.getState().toString(), Toast.LENGTH_LONG).show();
}
});
}
}, 0, 1000);
}
});
start_timer.start();
要停止计时器我写这个:
if(timer != null){
timer.cancel();
start_timer.interrupt();
}
问题是logcat停止显示asd但toast继续显示消息Interrupted。我也尝试用start_timer.stop()来停止线程,但它无论如何都没有用。我能怎么做? 谢谢,马蒂亚
答案 0 :(得分:0)
使用处理程序和发送延迟消息更稳定,更容易
http://www.tutorialforandroid.com/2009/01/using-handler-in-android.html
答案 1 :(得分:0)
也许从timer对象调用purge()方法会有所帮助。正如文件所说,
“从任务队列中删除所有已取消的任务。如果没有其他任何关于任务的引用,则在此调用之后,它们可以自由地进行垃圾回收。”