Java Android定时器仅一个线程

Java Android定时器仅一个线程,java,android,multithreading,timer,Java,Android,Multithreading,Timer,我对Android定时器的scheduleAtFixedRate选项有问题 Timer timer = new Timer(); TimerTask myTimerTask = new TimerTask() { public void run() { ... } }; timer.scheduleAtFixedRate(myTimerTask, 0, 5000); 这段话对我来说不好。它在服务中执行,因此每次调用该方法时,计时器都会创建一个新线程,并在旧线程仍

我对Android定时器的scheduleAtFixedRate选项有问题

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

这段话对我来说不好。它在服务中执行,因此每次调用该方法时,计时器都会创建一个新线程,并在旧线程仍在运行时执行相同的代码;这会造成性能问题。我需要每隔5秒运行run()方法中的代码,但我希望取消旧任务。有什么方法可以解决这个问题吗?

您可以使用
计时器。取消()
停止计时器

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

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

              timer.cancel();

          }
    });