Sök…


parametrar

Parameter detaljer
long millisInFuture Den totala varaktigheten som timern kommer att köras för, även hur långt i framtiden du vill att timern ska avslutas. På millisekunder.
long countDownInterval Det intervall som du vill ta emot timeruppdateringar. På millisekunder.
long millisUntilFinished En parameter som tillhandahålls i onTick() som berättar hur länge CountDownTimer har kvar. På millisekunder

Anmärkningar

CountDownTimer är en ganska mager klass - det gör en sak mycket bra. Eftersom du bara kan starta / avbryta en CountDownTimer måste du implementera paus / återuppta funktionalitet som visas i det andra exemplet. Använd Timer- objektet för mer komplex funktionalitet, eller för att ange en timer som ska köras på obestämd tid.

Skapa en enkel nedräkningstimer

CountDownTimer är användbar för att upprepade gånger utföra en åtgärd i ett jämnt intervall under en viss tid. I det här exemplet kommer vi att uppdatera en textvy varje sekund i 30 sekunder och berätta hur mycket tid som återstår. Sedan när timern är klar kommer vi att ställa in TextView så att "Klar".

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

Ett mer komplext exempel

I det här exemplet kommer vi att pausa / återuppta CountDownTimer baserat på aktivitetslivscykeln.

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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow