2014-09-29 40 views
0

我遇到了Android定時器的scheduleAtFixedRate選項問題。Android定時器只有一個線程

Timer timer = new Timer(); 
TimerTask myTimerTask = new TimerTask() { 
    public void run() { 
     ... 
    } 
}; 
timer.scheduleAtFixedRate(myTimerTask, 0, 5000); 

這段代碼對我來說是不好的事情。它在服務中執行,所以每次調用方法時,timer都會創建一個新線程並在舊線程仍在運行時執行相同的代碼;造成性能問題。我需要每5秒在run()方法中運行代碼,但我希望取消舊任務。有什麼辦法可以解決這個問題嗎?

回答

0

您可以使用timer.cancel()停止定時器。

例如,我有一個結束按鈕以完成定時器早:

finishEarlyButton.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View arg0) { 

       timer.cancel(); 

      } 
    });