2016-05-07 17 views
0
new CountDownTimer(30000, 1000) { 

    public void onTick(long millisUntilFinished) { 
     mTextField.setText("seconds remaining: " + millisUntilFinished/1000); 
    } 

    public void onFinish() { 
     mTextField.setText("done!"); 
    } 
    }.start() 

das hilft mir einen Timer zu erstellen, aber wie kann ich erstellen einen Timer, sobald die oben Timer laufen Oberflächen und eine Benachrichtigung erzeugen, wenn der Timer Ich möchte einen Countdown-Timer erstellen und sobald der Timer beendet möchte ich eine andere Countdown-Timer

Antwort

0

beendet sollten Sie nicht die CountDownTimer als anonyme Klasse definieren, sondern in einer eigenen Datei. Dann könnten Sie einfach: new CountDownTimer (30000, 1000) aufrufen, um es in der onFinish() Methode des vorherigen zu starten. Für die Benachrichtigung könnten Sie e. G. Verwenden Sie Toasts oder Snackbars.

1

Erstens: Machen Sie eine Klasse, die CountDownTimer

public class SecondTimer extends CountDownTimer{ 

     public SecondTimer(long millisInFuture, long countDownInterval) { 
      super(millisInFuture, countDownInterval); 
     } 

     @Override 
     public void onTick(long millisUntilFinished) { 

     } 

     @Override 
     public void onFinish() { 
     //Generate notification here 
     } 
    } 

Zweitens erweitert: Initialisieren Sie die Instanz dieser Klasse

SecondTimer secondTimer = new SecondTimer(5000,1000); 

Drittens: Starten SecondTimer wenn erste Timer stoppt

public class FirstTimer extends CountDownTimer{ 

     public SecondTimer(long millisInFuture, long countDownInterval) { 
      super(millisInFuture, countDownInterval); 
     } 

     @Override 
     public void onTick(long millisUntilFinished) { 

     } 

     @Override 
     public void onFinish() { 
     secondTimer.start(); 
     } 
    } 


FirstTimer firstTimer = new FirstTimer(5000,1000); 
firstTimer.start(); 
0

Diese sollte gut funktionieren

 
package com.stackoverflow.example; 

import android.os.CountDownTimer; 

/** 
* @author aminu on 5/7/2016. 
*/ 
public class CountDownTimerHelper { 

    private int numOfRuns; 
    private long millisInFuture, countDownInterval; 


    private CountDownTimerHelper(int numOfRuns, long millisInFuture, long countDownInterval) { 
     //you may check for invalid arguments here like negative intervals 

     this.numOfRuns = numOfRuns; 
     this.millisInFuture = millisInFuture; 
     this.countDownInterval = countDownInterval; 
    } 

    private void tryRun() { 
     if (numOfRuns-- > 0) { 
      new CountDownTimerImpl(millisInFuture, countDownInterval).start(); 
     } 
    } 


    public static void startCountDownTimers(int numOfRuns, long millisInFuture, long countDownInterval) { 
     new CountDownTimerHelper(numOfRuns, millisInFuture, countDownInterval).tryRun(); 
    } 

    private class CountDownTimerImpl extends CountDownTimer { 
     /** 
     * @param millisInFuture The number of millis in the future from the call 
     *       to {@link #start()} until the countdown is done and {@link #onFinish()} 
     *       is called. 
     * @param countDownInterval The interval along the way to receive 
     *       {@link #onTick(long)} callbacks. 
     */ 
     private CountDownTimerImpl(long millisInFuture, long countDownInterval) { 
      super(millisInFuture, countDownInterval); 
     } 

     @Override 
     public void onTick(long millisUntilFinished) { 
      //mTextField.setText("seconds remaining: " + millisUntilFinished/1000); 
     } 

     @Override 
     public void onFinish() { 
      //notify user countdown ended by showing toast or something like that 

      //mTextField.setText("done " + "remaining " + numOfRuns + "); 

      tryRun(); 
     } 

    } 
} 

dann, es zu benutzen nur CountDownTimerHelper.startCountDownTimers(numOfRuns,yourDuration,yourInterval)

Beispiel CountDownTimerHelper.startCountDownTimers(5,15000,1000) //this will run 5 successive countdowntimers with duration 15 seconds and interval 1 second

tun