У меня есть небольшое тестовое приложение, над которым я работаю и которое имеет таймер, который обновляет текстовое представление до обратного отсчета от 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, но при запуске onResume оно устанавливается равным 0. Почему переменная сбрасывается? Я думал, что приложение будет продолжать работать в фоновом режиме с теми же значениями. Я что-то пропустил? Все это объявлено в классе, который расширяет Activity.
Заранее спасибо!
Примечание: отредактировано для очистки кода