我正在开发适用于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分钟内完成?
答案 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运行某些内容,请回发。几天前我回答了一个问题。