В принципе, у меня есть 5 Runnables для каждого пользователя.Android: Runnable inside Runnable
Внутри каждого Runnable должно быть ожидание изменения переменной до ее продолжения. Я буду использовать либо Семафор, либо CountDownLatch.
Таким образом, внутри каждого Runnable существует runnable для ожидания.
Вот пример. r1 - это runnable, который должен быть пользователем, поэтому никогда не заканчивается.
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);
}
}
Проблема при использовании latch.await()
является то, что работает в основном потоке, чтобы блокировать пользовательский интерфейс.
Любая идея, как запустить те, которые можно запустить в разных потоках?
Почему в мире вы гнездились? – Chisko
что на самом деле вы хотите достичь? – pskink
Возможный дубликат [вложенного postDelayed/Runnable/Handler Android] (http://stackoverflow.com/questions/11197543/nested-postdelayed-runnable-handler-android) – Chisko