Grundsätzlich habe ich 5 Runnables für jeden Benutzer.Android: Runnable innerhalb Runnable
In jedem Runnable muss gewartet werden, bis sich eine Variable ändert, bis sie fortgesetzt wird. Ich werde entweder einen Semaphor oder einen CountDownLatch verwenden.
Also in jedem Runnable gibt es eine Runnable zum Warten.
Hier ist ein Beispiel. r1 ist ein runnable, der Benutzer sein soll, also niemals endend.
final Handler handler = new Handler();
Runnable r1 = new Runnable() {
@Override public void run() {
// here must be another runnable for waiting
Runnable r2 = new Runnable() {
@Override public void run() {
if (condition) {
latch.countDown();
// ending the runnable
handler.removeCallbacks(r2);
} else {
// keep waiting
handler.postDelayed(r2, 1000);
}
}
}
latch.await();
// restarting the runnable
handler.postDelayed(r1, 1000);
}
}
Das Problem bei latch.await()
ist, dass im Haupt-Thread ausgeführt wird, so dass die UI zu blockieren.
Gibt es eine Idee, wie man diese in verschiedenen Threads ausführbar startet?
Warum in der Welt nisten Sie sie ??? – Chisko
was willst du eigentlich erreichen? – pskink
Mögliches Duplikat von [verschachteltes postDelayed/Runnable/Handler Android] (http://stackoverflow.com/questions/11197543/nested-postdelayed-runnable-handler-android) – Chisko