2012-03-16 5 views
0

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

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

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

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

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

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

+0

Не могли бы вы добавить метод refresh() в класс Home и вызвать это вместо создания нового экземпляра? – Thomas

+0

Вы имеете в виду что-то вроде этого? 'public void onBackPressed() { \t \t super.onBackPressed(); \t \t \t \t \t Главная страница h = new Home(); \t \t \t h.refresh(); ' – gurpsone

ответ

0

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