Определить, работает ли CountdownTimer или нет - PullRequest
0 голосов
/ 02 марта 2012

Я создал таймер обратного отсчета, и он запускается сейчас, если логическое значение истинно, что было бы лучше, если бы я обнаружил, работает ли таймер.Есть ли способ сделать это?

Я создал следующий класс со следующим отсчетом времени:

public class GameActivity
{
    int GameTime      = 120;
    long GameTimeLeft = GameTime;
    long GameMillis;

    /** Called when the activity is first created. */
    @Override
    public void onCreate( Bundle savedInstanceState )
    {
        super.onCreate( savedInstanceState );
        setContentView( R.layout.gamemap );

        myupdater    = new Handler();
        GameMemory   = new PreferenceHandler(this);
        GameTimeLeft = GameMemory.getMinutesLeft();
        GameMillis   = ( GameTimeLeft * 60000 );

        if ( GameMemory.getTimerSetting() )
        {
            Log.d( "StartTimer", "Minutes Set " + ( GameMillis / 60000 ) );
            GameTimeLeftCounter.start();
            GameMemory.setTimerSetting( false );
        }
    }

    CountDownTimer GameTimeLeftCounter = new CountDownTimer( GameMillis, 60000 )
    {
        public void onTick( long millisUntilFinished )
        {
            GameTimeLeft = millisUntilFinished / 1000 / 60;
            Log.d( "GameTimeLeftCounter", "Time Left: " + GameTimeLeft );
            GameMemory.setMinutesLeft( GameTimeLeft );
        }

        public void onFinish()
        {
            //GAME OVER TIMER FINISHED
            Intent gameover = new Intent( BarcelonaTriviaGame.this, GameOver.class );
            gameover.setFlags( Intent.FLAG_ACTIVITY_NO_ANIMATION );
            Log.d( "TimerFinished", "Finished" );
            startActivity( gameover );
            finish();
        }
    };

Ответы [ 5 ]

2 голосов
/ 02 марта 2012

Как вы упомянули, что вы хотите использовать таймер в своей игре, и через некоторое время вы хотите закончить игру, поэтому лучший способ - Alarmmanager.. Когда вы запускаете игру, установите ожидающее намерение для обслуживания с помощью диспетчера тревог.поэтому по истечении времени диспетчер аварийных сигналов запустит службу, поэтому из этой службы отправьте трансляцию в игровое действие для «Игра окончена».

А также, если вы хотите обрабатывать функции возобновления и приостановки, когда пользователь нажимает наКнопка паузы просто отменяет ожидающее намерение и сохраняет продолжительность в файле настроек.а когда пользователь нажимает кнопку возобновления, просто выбирает время из предпочтения, вычисляет оставшееся время и устанавливает ожидающее намерение службы с помощью диспетчера аварийных сигналов.

Вы не беспокоитесь о том, что действие будет завершено иливоссоздавать.

1 голос
/ 02 марта 2012

Аналогично тому, что сказал JuanMa Cuevas, но в узле игровой активности в манифесте используется android: launch mode = "singleTask"

Это то, что вам нужно, а не один экземпляр ..

1 голос
/ 02 марта 2012

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

Решение Билла Пью @ http://en.wikipedia.org/wiki/Singleton_pattern - это отличный шаблон проектирования для одного человека.

1 голос
/ 02 марта 2012

Попробуйте android:launchMode="singleInstance" в манифесте

0 голосов
/ 02 марта 2012

По тому, что вы упоминаете, что действие не должно появляться снова, один из подходов будет вызывать метод finish () непосредственно перед вызовом намерения. При этом активность не будет сохранена в стеке Android. Если вы хотите закончить игру, тогда назовите FLAG KEEP NO HISTORY. Это закроет все действия, которые расположены ниже вершины стека.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...