2014-09-29 2 views
0

У меня проблема с настройкой таймера AndroidAtFixedRate.Android таймер только один поток

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

Этот снипп делает для меня плохие вещи. Он выполняется в службе, поэтому каждый раз, когда метод называется таймером, создается новый поток и выполняется тот же код, пока старый поток все еще работает; что создает проблемы с производительностью. Мне нужно запустить код в методе run() каждые 5 секунд, но я хочу, чтобы старая задача была отменена. Есть ли способ справиться с этой проблемой?

ответ

0

Вы можете использовать timer.cancel(), чтобы остановить таймер.

Например, у меня была кнопка окончания, чтобы закончить таймер рано:

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

       timer.cancel(); 

      } 
    }); 
Смежные вопросы