2017-05-07 119 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