2017-05-07 4 views
0

où dois-je modifier ce code, que je peux arrêter le CountDown? Comment supprimer l'ancien avant de lancer le nouveau CountDown suivant?Comment arrêter le CountDownTimer?

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

Couper le fil bleu! – hobbs

Répondre

0

ici est le code:

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(); 
      } 

aussi si vous voulez annuler première instance et commencer à nouveau, vous pouvez ajouter ci-dessus lignes dans la méthode OnFinish qui sera déclenchée lorsqu'un La minuterie termine son temps. vérifier ceci:

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

Je n'ai pas vu votre réponse avant, je pense que votre code est meilleur que ma solution ci-dessous, parce que mon code vérifie toutes les secondes 'if (my_condition == 1)' contenue, ce qui n'est pas nécessaire. merci – Json

0

J'ai fait ces 2 lignes. Je travaille à l'époque bien:

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

s'il vous plaît ajouter des explications à votre réponse – Ibo