Правильная реализация CountDownTimer

В настоящее время я разрабатываю игру для ОС Android. В нем игрок может выполнять действия. Каждое действие стоит игроку «энергии». Текущее значение энергии игроков хранится в таблице sqlite и отображается на главном экране (home.class). Когда игрок выполняет действия, значение энергии будет уменьшаться. Когда энергия достигает нуля, я хочу, чтобы таймер обратного отсчета сбрасывал значение энергии до 10.

То, как я реализовал это до сих пор, выглядит следующим образом. В верхней части главного экрана, на котором отображаются рейтинги здоровья/энергии пользователей, я отобразил CountDownTimer.

Таймер работает. Однако, когда я нажимаю кнопку и перехожу к другому действию, а затем возвращаюсь на главный экран, таймер перезапускается. Я знаю, что это потому, что следующий код запускается, когда я хочу вернуться на главный экран:

Intent i = new Intent(Crime.this, Home.class); startActivity(i);

Он запускает новый класс Home.class, потому что я хочу обновить значения, отображаемые на главном экране, после выполнения некоторых действий.

Как лучше реализовать CountDownTimer? Любая помощь будет оценена ... спасибо :)


person gurpsone    schedule 16.03.2012    source источник
comment
Не могли бы вы добавить метод типа refresh() в класс Home и вызывать его вместо создания нового экземпляра?   -  person Thomas    schedule 17.03.2012
comment
Вы имеете в виду что-то вроде этого? public void onBackPressed() { super.onBackPressed(); Home h = new Home(); h.refresh();   -  person gurpsone    schedule 17.03.2012


Ответы (1)


сохраните время, когда вы хотите сбросить энергию в базе данных (по крайней мере, после того, как вы нажмете onPause) и обновите оставшееся время с помощью тикающей темы. Таким образом, вам не нужно полагаться на таймеры для завершения / перезапуска, поскольку вы всегда можете пересчитать время на основе, например. текущее системное время

person zapl    schedule 16.03.2012