Android
Conto alla rovescia
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;
}