Сон () в андроид - PullRequest
       25

Сон () в андроид

0 голосов
/ 05 января 2012

Я работаю над мини-игрой для Android. Я использую этот код для создания 3-минутного таймера, который останавливается, когда игра приостановлена:

class update extends Thread{
    @Override
    public final void interrupt(){
        super.interrupt();
        }
        @Override
        public void run(){
            try{
            while(true){
                sleep(50);
                iTime++;
                if(iTime>=3600)
                    bEnd = true; //finish

                postInvalidate();
                }
            }catch(InterruptedException e){         
                }  
    }
}
update thread = null;

3600 = 20*3*60

Таймер завершает работу в эмуляторе примерно через 5 минут, а в Galaxy Tab - примерно через 1,5 минуты.

Почему это не всегда занимает 3 минуты? Как мне убедиться, что он заканчивается в течение 3 минут?

Ответы [ 2 ]

5 голосов
/ 05 января 2012

Как насчет использования Android CountDownTimer класса?

// 30 second countdown
new CountDownTimer(30000, 1000) {

     public void onTick(long millisUntilFinished) {
         mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
     }

     public void onFinish() {
         mTextField.setText("done!");
     }
  }.start();
0 голосов
/ 05 января 2012

Я не уверен, что вы делаете в postInvalidate (), но, возможно, вы можете сделать что-то с AlarmManager и сервисом.Вы можете создать задачу, которая будет выполняться через 3 минуты, и она запустит службу, которая, в вашем случае, сделает игру недействительной.

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

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

...