향상된 for 루프 및 switch 문을 사용하여 다양한 AsyncTask를 트리거합니다. 어떤 AsyncTask가 compeleted 될 때까지 기다릴 루프의 각 반복을 어떻게 멈출 수 있습니까? 스레드를 생성하고 각 AsyncTask가 완료 될 때까지 기다리거나 조인/알림을 알리려고했지만 UI를 멈추게했습니다. AsyncTask를 뭔가를향상된 for 루프 일시 중지
편집을 반환 할 때까지
new MyAsyncTask().execute().get();
이 코드를 일시 중지 : 다음은 내 코드 ... 당신은 AsyncTask를 호출하면
for (Integer integer : sequence) {
switch (integer) {
case 1: // Async process
break;
case 2: // Async process
break;
case 3: // Async process
break;
case 4: // Async process
break;
default: break;
}
//Need magic solution here...
}
저는 Simon-like 프로세스와 같은 AsyncTask를 사용하려고합니다. 루프는 각 단추를 반복하는 것입니다 (Integer 값을 기반으로 함). AsyncTask를 사용하여 doInBackground 메서드에서 1 초 동안 절전 모드를 사용하고 onPreExecute와 onPostExecute를 모두 사용하여 UI의 단추 상태를 업데이트합니다. 이 같은 것을 성취 할 수있는 더 좋은 방법이 있습니까? – Jason
자체 스레드의 모든 제어 코드를 이동하고 비동기 적으로 UI를 업데이트하십시오. AsyncTask는 장기 실행 백그라운드 작업을 처리하는 가장 좋은 방법은 아닙니다. 자신 만의 스레드를 사용하고 Handler를 통해 UI 스레드와 통신을 시도하십시오. 가능한 한 UI 스레드를 깨끗하게 유지하고 UI 관련 작업 만 수행하십시오. –