Szukaj…


Parametry

Parametr Detale
long millisInFuture Całkowity czas działania timera, czyli jak daleko w przyszłości chcesz zakończyć timer. W milisekundach.
long countDownInterval Interwał, w którym chcesz otrzymywać aktualizacje timera. W milisekundach.
long millisUntilFinished Parametr podany w onTick() który mówi, ile czasu pozostało CountDownTimer. W milisekundach

Uwagi

CountDownTimer jest dość szczupłą klasą - robi jedną rzecz bardzo dobrze. Ponieważ możesz uruchomić / anulować CountDownTimer, musisz zaimplementować funkcję pauzy / wznowienia, jak pokazano w drugim przykładzie. Aby uzyskać bardziej złożoną funkcjonalność lub określić licznik czasu, który powinien działać bez końca, użyj obiektu Timer .

Tworzenie prostego minutnika

CountDownTimer jest przydatny do wielokrotnego wykonywania akcji w ustalonych odstępach czasu przez określony czas. W tym przykładzie będziemy aktualizować widok tekstu co sekundę przez 30 sekund, informując o pozostałym czasie. Następnie, gdy czas dobiegnie końca, ustawimy TextView na „Gotowe”.

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

Bardziej złożony przykład

W tym przykładzie wstrzymamy / wznowimy CountDownTimer na podstawie cyklu życia działania.

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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow