Ricerca…


Parametri

Parametro Dettagli
long millisInFuture La durata totale per cui verrà eseguito il timer, ovvero fino a che punto in futuro si desidera che il timer termini. In millisecondi.
long countDownInterval L'intervallo al quale si desidera ricevere gli aggiornamenti del timer. In millisecondi.
long millisUntilFinished Un parametro fornito in onTick() che indica per quanto tempo il CountDownTimer è rimasto. In millisecondi

Osservazioni

CountDownTimer è una classe piuttosto magra - fa una cosa molto bene. Poiché è possibile avviare / annullare solo un CountDownTimer, è necessario implementare la funzionalità di pausa / ripresa come mostrato nel secondo esempio. Per funzionalità più complesse o per specificare un timer che deve essere eseguito indefinitamente, utilizzare l'oggetto Timer .

Creazione di un semplice timer per il conto alla rovescia

CountDownTimer è utile per eseguire ripetutamente un'azione in un intervallo costante per una durata impostata. In questo esempio, aggiorneremo una visualizzazione testuale ogni secondo per 30 secondi indicando quanto tempo rimane. Quindi, quando il timer termina, imposteremo TextView per dire "Fatto".

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 esempio più complesso

In questo esempio, metteremo in pausa / riprendere il CountDownTimer basato sul ciclo di vita dell'Attività.

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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow