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);
Ja, nett – versteh nur kein Wort
Gibt’s noch ne andere Möglichkeit?
Den Timer will ich nicht beenden
Einfach hier reinschreiben, die E-Mail stimmt sowieso nicht 🙂