2012-01-05 7 views
0

私はAndroid用のミニゲームに取り組んでいます。約1.5分後、約5分以内にエミュレータでアンドープのスリープ()

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 

タイマーが終了し、そしてギャラクシータブで:私は、ゲームが一時停止されたときに一時停止3分タイマーを作成するには、このコードを使用しています。

なぜ3分かかるのですか? 3分以内に完了するようにするにはどうすればよいですか?

+1

最適化?なぜ今の時間を見つけ出すのではなく、タイマーを3分で期限切れにして、タイマーが消えたら完了してください。 – KevinDTimm

+0

だから、私はゲームを一時停止することはできません – Sunary

答えて

0

私はpostInvalidate()で何をしているのか分かりませんが、AlarmManagerとサービスで何かできることがあります。あなたは今から3分後に実行されるタスクを作成することができ、あなたの場合はゲームを無効にするサービスを実行します。

私はスリープメソッドでタイムアウトを処理しようとしていた多くの疑問を見てきました。私はAndroidがそのように動作することを保証していないと信じています。

アラームマネージャでサービスを作成したり、何かを実行したりするのを手伝う必要がある場合は、ポストバックしてください。私は数日前にそれについての質問に答えました。

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(); 
+0

しかし、私はゲームを一時停止できません:( – Sunary

+2

'onPause'と' onResume'にセットされ、タイマーでこれをチェックする 'isPaused'ブールフラグを持っていませんか? – Ricky

関連する問題