2012-04-13 67 views
0

我有一个线程中运行的计时器。这是代码:停止计时器内线程Android

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但敬酒继续演出的消息中断。我也尝试用start_timer.stop()停止线程,但它无法工作。我能怎么做? 谢谢,马蒂亚

+0

你知道计时器启动它自己的线程吗?还有你要做的任何事情都应该通过我解决的处理程序 – L7ColWinters 2012-04-13 19:39:47

+0

来完成。计时器和线程正确停止,还有另一个错误不依赖于这两个对象 – pindol 2012-04-14 12:49:21

回答

0

也许调用清除()从计时器对象的方法会有所帮助。如文档所述,

“从任务队列中删除所有取消的任务,如果任务中没有其他引用,则在此调用之后,可以自由收集垃圾回收。