0

我有一个在线程中运行的计时器。这是代码:

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_timer.stop() 停止线程,但它无论如何都不起作用。我能怎么做?谢谢, 马蒂亚

4

2 回答 2

0

使用处理程序和发送延迟消息更稳定、更容易

http://www.tutorialforandroid.com/2009/01/using-handler-in-android.html

于 2012-04-13T19:41:15.530 回答
0

也许从计时器对象调用 purge() 方法会有所帮助。正如文件所说,

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

于 2012-04-13T19:45:23.217 回答