Я использую Timer() из-за его точности, но работает в том же порядке, что и PostDelayed Handler. Он называется только один раз. Вот код таймера:Android Java Timer()
public void setWFT() {
WFT = new Timer();
WFT.schedule(new TimerTask() {
@Override
public void run() {
WFTTimerMethod();
}
}, 60000); // 60 seconds delay
}
private void WFTTimerMethod() {
this.runOnUiThread(Timer_Tick);
}
private Runnable Timer_Tick = new Runnable() {
public void run() {
// My commands here
}
};
Это только вызовы выполняются() один раз через 60 секунд после того, как таймер запускается. Иногда мне приходится отменить таймер, чтобы обновить задержку (замените значение «60000»). Чтобы снова запустить таймер, я просто воссоздаю таймер, снова вызвав WFT() с новым значением задержки.
Проблема, когда я отменить таймер с помощью:
WFT.cancel();
WFT.purge();
Таймер не запускается. run() не выполняется, когда это предполагается. Так что мой вопрос: я использую cancel() и purge() или просто cancel()?
Благодаря
Кроме того, поскольку мой Timer() действует как PostDelayed и вызывается только через 60 секунд в будущем, отменяет() отменяет и уничтожает таймер до его выполнения или не будет влиять на мой Timer() как это только один раз? – KickAss
Из той же ссылки API: 'cancel()' "Завершает этот таймер, отбрасывая любые запланированные задачи. Не мешает выполняемой в данный момент задаче (если она существует). После того, как таймер был завершен, его поток выполнения завершается изящно, и на нем не может быть запланировано больше задач ». Таким образом, он отменяет все запланированные события. –
Хорошо. Это прекрасно. спасибо – KickAss