У меня есть AsyncTask
, который действует как таймер обратного отсчета для моей игры. По завершении обратного отсчета отображается экран окончания времени, а также обновляется таймер, отображаемый на экране. Все работает нормально, за исключением того, что мне нужно иметь возможность сделать паузу и возобновить ее, когда в игре нажата кнопка паузы.
Если я отменю его и попытаюсь повторно выполнить, он завершится с IllegalStateException
.
Если я отменяю его и создаю новый AsyncTask вместо него, старый начинает работать снова, а новый запускается одновременно.
Есть ли способ отменить / приостановить таймер и перезапустить его, используя AsyncTask
s, или есть другой способ сделать это?
EDIT:
Вот что я сделал для решения:
mhandler = new Handler();
mtimerTask = new Runnable(){
public void run(){
mtimer -= 1;
if(mtimer == 0)
{
mhandler.removeCallbacks(this);
}
mhandler.postDelayed(this, 1000);
}
};
mhandler.removeCallbacks(mtimerTask);
mhandler.post(_timerTask)`
Не уверен, что это лучший способ, но у меня это сработало.