Android 线程内的停止计时器
我有一个计时器在线程中运行。代码如下:Android 线程内的停止计时器,android,multithreading,timer,Android,Multithreading,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
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继续显示消息中断。我还尝试使用start\u timer.stop()停止线程,但它无论如何都不起作用。我该怎么办?
谢谢,Mattia,它更稳定,更容易使用处理程序和发送延迟消息 也许从计时器对象调用purge()方法会有所帮助。正如文件所说
“从任务队列中删除所有已取消的任务。如果任务上没有其他引用,则在此调用后,可以对这些任务进行垃圾收集。”您知道计时器会启动自己的线程吗?此外,任何影响ui的操作都应该通过handlerI解决。计时器和线程正确停止,另一个错误不依赖于这两个对象