Фоновый таймер (Timer) Andoid Studio

В игре Alias потребовалось расширить свои знания в области фонового подсчета времени. Понятное дело потребуется класс наследник Thread или поддерживающий интерфейс Runnable. Как оказалось есть стандартный класс Timer.

В начале было слово… точнее объявление экземпляра класса:

final Timer timer= new Timer();

Затем создаем метод для таймер:

private void Stopwatch() { 
timer.scheduleAtFixedRate(new TimerTask() { 
@Override 
public void run() { 
runOnUiThread(new Runnable() { 
@Override 
public void run() { 
if (!pause_timer)  //здесь проверяю на паузе ли таймер, переменная pause_timer типа boolean
time_va--; 
 if (time_var == -1) { //здесь описываем, что будет когда таймер истечет по времени (в моем случае переменная будет меньше 0)
    timer.cancel();    //в данном случае прекращаем работу таймера


}); 

}, 0, 1000); //в расписании таймера указываем что задержка не нужна и "тик" равен 1 секунде. 
}

Далее в методе onCreate остается лишь запустить таймер:

Stopwatch();

В моём случае реализация позволила: отслеживать паузы в приложении (нажатие кнопки «Пауза», сворачивание приложения); остановить таймер по истечению времени (хранящегося в переменной time_var).

Методы класса Timer:

  • void cancel() — прерывает поток таймера
  • int purge() — удаляет прерванные задания из очереди таймера
  • void schedule (TimerTask task, long delay) — задание task планируется к выполнению через период в миллисекундах, переданный в параметре delay
  • void schedule (TimerTask task, long delay, long period) — задание task планируется к выполнению через период в миллисекундах, переданный в параметре delay. Затем задание повторяется повторно периодически — каждые period миллисекунд
  • void schedule (TimerTask task, Date when) — задание task планируется на время, указанное в параметре when
  • void schedule(TimerTask task, Date when, long period) — задание task планируется на время, указанное в параметре when. Затем задание выполняется повторно периодически — каждые period миллисекунд
  • void scheduleAtFixedRate (TimerTask task, long delay, long period) — задание task планируется к выполнению через период в миллисекундах, переданный в параметре delay. Затем задание выполняется повторно периодически — каждые period миллисекунд. Время каждого повтора задаётся относительно первого запуска.
  • void scheduleAtFixedRate (TimerTask task, Date when, long period) — задание task планируется к выполнению на время, указанное в параметре when. Задание затем выполняется повторно периодически — каждые period миллисекунд. Время каждого повтора задаётся относительно первого запуска.

You may also like...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *