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解决。计时器和线程正确停止,另一个错误不依赖于这两个对象