Android
Nedräkning
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