Android
Countdown-Timer
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;
}