TimerTask mit AndroidTimerTask on Android

Ein TimerTask (java.util.TimerTask) wird verwendet um wiederkehrende Aufgaben auszuführen. Soll dabei eine Oberflächenkomponente aktualisiert werden darf dieses nicht in dem TimerTask ausgeführt werden. Oberfläche darf nur aus dem UI-Tread verändert werden. Eine Möglichkeit ist das posten eines Runnables in eine UI-Komponente.

Im folgenden Beispiel wird ein TimerTask verwendet um die Oberfläche zu aktualisieren. Dabei wird jede Sekunde geprüft ob eine WLAN-Verbindung vorliegt. Wenn ja, wird der TimerTask beendet und die Oberfläche aktualisiert. Diese Aufgaben werden über das lbStatus-Label in dem UI-Thread ausgeführt.

final Timer timer = new Timer();
timer.schedule(new TimerTask() {
   @Override
   public void run() {
      lbStatus.post(new Runnable() {
         public void run() {
            if (ensureWLANConnected()) {
               timer.cancel();
               updateUI();
            }
         }
      });
   }
}, 1000, 1000);