2017-01-30 7 views
0

私はh.postdelayedを作成しました。条件が真であればキャンセルしたいと思います。 私はif条件を書いて、その内部にh.removeCallbacksAndMessages(null)を行いました。しかし、私はまだ "タイマー"が動作しているのを見ることができます。どんな助け?ハンドラ#removeCallbacksAndMessagesが正しく動作しない

h.postDelayed(new Runnable() { 
    public void run() { 
    timePassed++; 
    timeLeft = (maxTime - timePassed)/10; 
    timeLeftStr = "Time left: " + timeLeft + " seconds"; 
    timer.setText(timeLeftStr); 

    if (timeLeft <= 0) { 
     started = false; 

     h.removeCallbacksAndMessages(null); 

     setupGameOver(restartBtn, header1, header2, timer); 
    } 

    h.postDelayed(this, 100); 
    } 
}, 100); 

答えて

0

いけないpostDelayed実行したいいけない場合は、再度

h.postDelayed(new Runnable() { 
    public void run() { 
     timePassed++; 
     timeLeft = (maxTime - timePassed)/10; 
     timeLeftStr = "Time left: " + timeLeft + " seconds"; 
     timer.setText(timeLeftStr); 

     if (timeLeft <= 0) { 
      started = false; 

      h.removeCallbacksAndMessages(null); 

      setupGameOver(restartBtn, header1, header2, timer); 
     } else { 
      // run again. 
      h.postDelayed(this, 100); 
     } 

    } 
}, 100); 
+0

ので、同じように:いけないのremoveCallbacksAndMessages再度実行したいいけない場合 - あなたがそこにあるので、いずれかが 'Runnable'を「保留」持っていけません削除するものはありません。 – pskink

+0

yea。 @Freelineは他のrunnablesもループしているので、停止する必要があると仮定していますので、 'removeCallbacksAndMessages'メソッドをそのまま残しておきます。 – petey

+0

aaa ok私はあなたのポイントを参照 – pskink

関連する問題