2014-04-10 5 views
0

여러 개의 비동기 요청을 호출하는 Android 기능이 있습니다. 나는 모든 것이 끝났음을 알고 싶다. 나는 onPostExecute()를 보았지만 그 중 하나가 끝난 경우에만 알려줍니다. 이것을 할 수있는 방법이 있습니까?비동기 작업의 Android 비동기 그룹 완료

답변

1

아마도 가장 간단한 방법은 카운터 변수를 만드는 것입니다. int taskCount으로 설정하고 실행하기 전에 실행해야하는 번호 AsyncTask으로 설정하십시오. 그런 다음 카운터를 감소시키는 메소드를 작성하고 각 태스크의 onPostExecute() 메소드에서 호출하십시오. taskCount == 0이되면 작업이 완료됩니다.

아주 간단한 예 : 작업 이상 AsyncTask를이 한 번에 각 작업 1 핸들러에 비교하고, 당신이 핸들러를 사용하는 경우 여전히 # 마이크의 대답은 여전히 ​​적용됩니다 실행하기 때문에 걸릴 것으로

int taskCount; 

private void startTasks() 
{ 
    Task task1 = new Task(); 
    Task task2 = new Task(); 
    Task task3 = new Task(); 

    taskCount = 3; 

    task1.execute(); 
    task2.execute(); 
    task3.execute();  
} 

private void taskDone() 
{ 
    taskCount--; 
    if (taskCount == 0) 
    { 
     Toast.makeText(MainActivity.this, "All done!", 0).show(); 
    } 
} 

private class Task extends AsyncTask <Void, Void, Void> 
{ 
    @Override 
    protected Void doInBackground(Void... args) 
    { 
     return null; 
    } 

    @Override 
    protected void onPostExecute(Void result) 
    { 
     taskDone(); 
    } 
} 
관련 문제