Suche…


Parameter

Parameter Einzelheiten
long millisInFuture Die Gesamtdauer, für die der Timer ausgeführt wird, dh wie weit in der Zukunft der Timer beendet werden soll. In Millisekunden.
long countDownInterval Das Intervall, in dem Sie Timer-Updates erhalten möchten. In Millisekunden.
long millisUntilFinished Ein in onTick() bereitgestellter Parameter, der onTick() , wie lange CountDownTimer noch vorhanden ist. In Millisekunden

Bemerkungen

CountDownTimer ist eine ziemlich schlanke Klasse - sie tut eines sehr gut. Da Sie nur einen CountDownTimer starten oder abbrechen können, müssen Sie die Funktion zum Anhalten / Wiederaufnehmen wie im zweiten Beispiel gezeigt implementieren. Verwenden Sie für komplexere Funktionen oder zur Angabe eines Timers, der unbegrenzt ausgeführt werden soll, das Timer- Objekt.

Einen einfachen Countdown-Timer erstellen

CountDownTimer ist nützlich, wenn eine Aktion für eine festgelegte Dauer wiederholt in einem konstanten Intervall ausgeführt wird. In diesem Beispiel aktualisieren wir jede Sekunde 30 Sekunden lang eine Textansicht, in der die verbleibende Zeit angezeigt wird. Wenn der Timer beendet ist, setzen wir die Textansicht auf "Fertig".

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

Ein komplexeres Beispiel

In diesem Beispiel wird der CountDownTimer außerhalb des Aktivitätslebenszyklus angehalten / fortgesetzt.

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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow