2017-01-30 9 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