Buscar..


Parámetros

Parámetro Detalles
long millisInFuture La duración total a la que se ejecutará el temporizador, también conocido como hasta qué punto en el futuro desea que finalice el temporizador. En milisegundos.
long countDownInterval El intervalo en el que desea recibir actualizaciones de temporizador. En milisegundos.
long millisUntilFinished Un parámetro proporcionado en onTick() que indica cuánto tiempo ha permanecido el CountDownTimer. En milisegundos

Observaciones

CountDownTimer es una clase bastante magra, que hace una cosa muy bien. Como solo puede iniciar / cancelar un CountDownTimer, debe implementar la funcionalidad de pausa / reanudación como se muestra en el segundo ejemplo. Para una funcionalidad más compleja, o para especificar un temporizador que debe ejecutarse indefinidamente, use el objeto Timer .

Creando un simple temporizador de cuenta regresiva

CountDownTimer es útil para realizar repetidamente una acción en un intervalo estable durante un tiempo determinado. En este ejemplo, actualizaremos una vista de texto cada segundo durante 30 segundos para indicar cuánto tiempo queda. Luego, cuando el temporizador finalice, configuraremos TextView para que diga "Listo".

TextView textView = (TextView)findViewById(R.id.text_view);

CountDownTimer countDownTimer = new CountDownTimer(30000, 1000) {
    public void onTick(long millisUntilFinished) {
        textView.setText(String.format(Locale.getDefault(), "%d sec.", millisUntilFinished / 1000L));
    }

    public void onFinish() {
        textView.setText("Done.");
    }
}.start();

Un ejemplo más complejo

En este ejemplo, haremos una pausa / reanudaremos el CountDownTimer basado en el ciclo de vida de la actividad.

private static final long TIMER_DURATION = 60000L;
private static final long TIMER_INTERVAL = 1000L;

private CountDownTimer mCountDownTimer;
private TextView textView;

private long mTimeRemaining;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    textView = (TextView)findViewById(R.id.text_view); // Define in xml layout.

    mCountDownTimer = new CountDownTimer(TIMER_DURATION, TIMER_INTERVAL) {
        
        @Override
        public void onTick(long millisUntilFinished) {
            textView.setText(String.format(Locale.getDefault(), "%d sec.", millisUntilFinished / 1000L));
            mTimeRemaining = millisUntilFinished; // Saving timeRemaining in Activity for pause/resume of CountDownTimer.
        }

        @Override
        public void onFinish() {
            textView.setText("Done.");
        }
    }.start();
}


@Override
protected void onResume() {
    super.onResume();
    
    if (mCountDownTimer == null) { // Timer was paused, re-create with saved time.
        mCountDownTimer = new CountDownTimer(timeRemaining, INTERVAL) {
            @Override
            public void onTick(long millisUntilFinished) {
                textView.setText(String.format(Locale.getDefault(), "%d sec.", millisUntilFinished / 1000L));
                timeRemaining = millisUntilFinished;
            }

            @Override
            public void onFinish() {
                textView.setText("Done.");
            }
        }.start();
    }
}

@Override
protected void onPause() {
    super.onPause();
    mCountDownTimer.cancel();
    mCountDownTimer = null;
}


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow