Recherche…


Paramètres

Paramètre Détails
long millisInFuture La durée totale de la minuterie, c'est-à-dire à quelle distance vous souhaitez que le minuteur se termine. En millisecondes.
long countDownInterval L'intervalle auquel vous souhaitez recevoir les mises à jour du minuteur. En millisecondes.
long millisUntilFinished Un paramètre fourni dans onTick() qui indique la durée restante de CountDownTimer. En millisecondes

Remarques

CountDownTimer est une classe plutôt simple - elle fait très bien une chose. Comme vous ne pouvez que démarrer / annuler un CountDownTimer, vous devez implémenter la fonctionnalité de pause / reprise, comme indiqué dans le deuxième exemple. Pour des fonctionnalités plus complexes ou pour spécifier une horloge qui doit s'exécuter indéfiniment, utilisez l'objet Timer .

Création d'un compte à rebours simple

CountDownTimer est utile pour effectuer plusieurs fois une action dans un intervalle régulier pendant une durée définie. Dans cet exemple, nous mettrons à jour une vue texte toutes les secondes pendant 30 secondes pour indiquer le temps restant. Ensuite, lorsque la minuterie se termine, nous allons définir le TextView pour dire "Terminé".

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 exemple plus complexe

Dans cet exemple, nous allons suspendre / reprendre le CountDownTimer basé sur le cycle de vie de l'activité.

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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow