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);