У меня есть небольшое тестовое приложение, на котором я работаю, у которого есть таймер, который обновляет текстовое представление до обратного отсчета от 100 до 0. Это работает отлично, но теперь я пытаюсь приостановить приложение, если пользователь нажимает кнопку "Назад" на и затем перезапустите таймер с того места, где они остановились при повторном открытии приложения. Вот код, который я использую:
@Override
public void onPause()
{
if(this._timer_time_remaining > 0) {
this.timer.cancel();
}
super.onPause();
Log.v("Pausing", String.format("Pausing with %d", this._timer_time_remaining));
}
@Override
public void onResume()
{
Log.v("Resuming", String.format("Resuming with %d", this._timer_time_remaining));
if(this._timer_time_remaining > 0) {
start_timer(this._timer_time_remaining);
}
super.onResume();
}
Метод start_timer() создает CountDownTimer, который обновляет текстовое представление в методе onTick и обновляет переменную this._timer_time_remaining int.
CountDownTimer и _timer_time_remaining объявляются на уровне класса следующим образом:
private CountDownTimer timer;
private int _timer_time_remaining;
Из распечаток Log.v() я вижу, что переменная _timer_time_remaining имеет правильное количество секунд, хранящихся при вызове onPause, но она возвращается к 0 при запуске onResume. Почему переменная получает reset? Я думал, что приложение будет продолжать работать в фоновом режиме с теми же значениями. Я что-то упускаю? Это все объявлено в классе, который расширяет Activity.
Спасибо заранее!
Примечание. Отредактировано для очистки копирования кода.