Android计时器只有一个线程

时间:2014-09-29 15:10:45

标签: java android multithreading timer

我遇到Android计时器scheduleAtFixedRate选项的问题。

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

这个片段对我来说是坏事。它在服务中执行,因此每次调用方法时,timer会创建一个新线程,并在旧线程仍在运行时执行相同的代码;这会产生性能问题。我需要每隔5秒在run()方法中运行代码,但我希望取消旧任务。有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:0)

您可以使用timer.cancel()停止计时器。

例如,我有一个结束按钮来提前完成计时器:

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

              timer.cancel();

          }
    });