-3
기본적으로 각 사용자마다 5 개의 Runnables가 있습니다.Android : Runnable 내의 Runnable
각 Runnable 안에 변수가 변경 될 때까지 기다려야합니다. 나는 Semaphore 나 CountDownLatch를 사용할 것이다.
그래서 각 Runnable 내부에는 대기중인 runnable이 있습니다.
다음은 예입니다. r1은 사용자이기 때문에 끝내지 않는 실행 파일입니다.
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()
을 사용할 때의 문제점은 UI를 차단하는 주 스레드에서 실행 중입니다.
다른 스레드에서 실행하는 방법을 알기 원하십니까?
왜 세계에 당신이 그들을 중첩하고 있습니까 ??? – Chisko
실제로 달성하고자하는 것은 무엇입니까? – pskink
[중첩 된 postDelayed/Runnable/Handler Android]의 가능한 복제본 (http://stackoverflow.com/questions/11197543/nested-postdelayed-runnable-handler-android) – Chisko