睡眠()在android中

时间:2012-01-05 16:10:23

标签: android multithreading sleep runnable

我正在开发适用于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分钟后在模拟器中完成,大约1.5分钟后在Galaxy Tab中完成。

为什么总是需要3分钟?我如何确保在3分钟内完成?

2 个答案:

答案 0 :(得分:5)

如何使用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();

答案 1 :(得分:0)

我不确定你在postInvalidate()中做了什么,但也许你可以用AlarmManager和服务做些什么。您可以创建一个将在3分钟后运行的任务,它将执行该服务,在您的情况下,该服务将使游戏无效。

我已经看到许多试图用睡眠方法处理超时的问题,我相信Android并不能保证它会以这种方式工作。

如果您需要帮助创建服务或使用AlarmManager运行某些内容,请回发。几天前我回答了一个问题。