Фоновый таймер (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...

10 комментариев

  1. Low Cost Pharmacy Online viagra Prescription Drugs Without Rx Cytotec Prix Au Maroc Cat Dosage Amoxicillin

  2. How to buy isotretinoin Riverside Buy Propecia Now Le Cialis Marche cialis accion terapeutica Is Azithromycin Similar To Amoxicillin Pregnisone Pills From Uk Levitra Original Pas Cher

  3. Permethrin Cream cialis prices Zithromax Otc Viagra 100mg 40

  4. Viagra Online Uk Paypal п»їcialis Commander Cialis Generique En France

  5. Express Pharmacy New Zealand Que Significa La Propecia levitra for sale online Buy Celexa 20 Mg

  6. Oxido Nitrico Viagra buy cialis 674 Overnight Atenolol On Line Pastillas Cialis Y Alcohol Cialis 20 Mg Para Que Sirve

  7. Prix De Cialis Au Maroc Viagra Sans Ordonnance Pays Suisse Order generic isotretinoin low price internet overseas Amoxicillin Clavulanic Acid Dose Buy Antabuse

  8. Accutane Buy Online Reviews Amoxicillin Safe In Pregnancy generic cialis canada Cheap Meds Viagra In Svizzera Vu

  9. Kamagra Eu Generic Levitra For Sale In Us Cialis En Diabeticos vytorin Robaxin 500 Onlike No Prescription

  10. Pflanzliches Viagra Rezeptfrei Cialis 20mg Lilly tomar propecia lactosa monohidrato Buy Generic Viagra India Yaz Zovirax Cream Ointment

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

Ваш e-mail не будет опубликован.

Lost your password? Please enter your username or email address. You will receive a link to create a new password via email.
Регистрация не требуется. В качестве логина укажите рабочую почту, в качестве пароля - пароль от компьютера.