2017-05-07 75 views
0

我應該在哪裏編輯這段代碼,我可以阻止CountDown?如何停止CountDownTimer?

如何在開始下一個新的CountDown之前刪除舊的?

public void MyCounter1(){ 
 
     new CountDownTimer(60000, 1000) { 
 
      public void onTick(long millisUntilFinished) { 
 
       txt_timer.setText("Left time : " + millisUntilFinished/1000);       
 
      } 
 
      public void onFinish() { 
 
       txt_timer.setText("done"); 
 
      } 
 
     }.start(); 
 

 
    }

+0

切藍線! – hobbs

回答

0

這裏是代碼:

CountDownTimer timer= null; 
      public void MyCounter1(){ 
       timer =new CountDownTimer(60000, 1000) { 
        public void onTick(long millisUntilFinished) { 
         txt_timer.setText("Left time : " + millisUntilFinished/1000); 
        } 
        public void onFinish() { 
         txt_timer.setText("done"); 
        } 
       }; 
       timer.start(); 

      } 

// To stop & start new timer check not null of timer instance first then cancel existing timer & start new one 
      if(timer != null){ 
       timer.cancel(); 
       MyCounter1(); 
      } 

此外,如果你想取消一審並開始新的一個,你可以添加上述onFinish方法線,將被調用時,計時器完成他的時間。 檢查此:

CountDownTimer timer= null; 
     public void MyCounter1(){ 
          timer =new CountDownTimer(60000, 1000) { 
           public void onTick(long millisUntilFinished) { 
            txt_timer.setText("Left time : " + millisUntilFinished/1000); 
           } 
           public void onFinish() { 
            txt_timer.setText("done"); 
            if(timer != null){ 
             timer.cancel(); 
             MyCounter1(); 
            } 
           } 
          }; 
          timer.start(); 

         } 
+0

我之前沒有看到您的答案,我認爲您的代碼更好,因爲我的解決方案如下,因爲我的代碼檢查每秒鐘if(my_condition == 1)'contenue,這是不需要的。謝謝 – Json

0

我做了這2行。我工作在罰款時:

public void MyCounter1(){ 
     CountDownTimer countDownTimer = new CountDownTimer(60000, 1000) { 
      public void onTick(long millisUntilFinished) { 
       if(my_condition=1){ //1- just make my_condition<>1 to stop the counter 
       txt_timer.setText("Left time : " + millisUntilFinished/1000); }      
      } 
      public void onFinish() { 
       countDownTimer.cacel(); // 2- delete old one 
       txt_timer.setText("done"); 
      } 
     }.start(); 

    } 
0
private int time = 10; //example 10 min.  

CountDownTimer(60000 * time, 1000) 

@Override 
      public void onFinish() { 
       txt_timer.setText("done"); 
       cancel(); 
       time = 0; 
+0

請將解釋添加到您的答案 – Ibo