2010-09-22

Rolle rückwärts – CountDownTimer kann’s

Manchmal sind es die kleinen Dinge, die dem Programmierer das Leben merklich erleichtern. Deshalb möchte ich in loser Folge nützliche Helfer vorstellen, die leider allzu oft in der riesigen Android-Klassenbibliothek untergehen. CountDownTimer beispielsweise ruft regelmäßig eine bestimmte Methode auf, bis eine vorher festgelegte Zeit verstrichen ist. Hier das Quelltextfragment aus der Android-Doku:

    new CountDownTimer(30000, 1000) {

         public void onTick(long millisUntilFinished) {
             view.setText("seconds remaining: " + millisUntilFinished / 1000);
         }

         public void onFinish() {
             view.setText("done!");
         }
      }.start();

Der Timer des Beispiels läuft also insgesamt 30 Sekunden, wobei einmal pro Sekunde die Methode onTick aufgerufen wird. Laut Doku ist garantiert, dass ein nachfolgender Aufruf erst zum Zuge kommt, wenn der vorherige abgearbeitet wurde (durch ein synchronized auf das Timer-Objekt). Sie können das ausprobieren, indem Sie ein Thread.sleep(2000); einfügen. Nach Ablauf der 30 Sekunden wird onFinish aufgerufen – es sei denn, es wurde vorher cancel aufgerufen. Nicht ausdrücklich dokumentiert ist übrigens, dass Sie jederzeit erneut start aufrufen können. Auch das können Sie ausprobieren, indem Sie in onTick folgendes einfügen:

      if (millisUntilFinished / 1000 == 3)
        cdt.start();

Kennen Sie nützliche Klassen, die selten in Beispielen auftauchen? Schreiben Sie mir…

No comments:

Post a Comment