2014-05-22 6 views
0

여러 파일을 동시에 다운로드하고 각 다운로드의 진행률을 업데이트하려는 Download Manager를 만들고 있습니다. 다음 줄을 사용하여 AsyncTask를 실행했습니다.동시에 여러 개의 AsyncTask를 만들 수 있습니까?

executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,Utility.KEY_DOWNLOAD_PATH); 

그러나 여러 AsyncTask가 시작되지 않습니다. 다음 다운로드를 클릭하면 먼저 중지되고 새 다운로드가 시작됩니다.

감사의 말

+0

나는 당신이 asyncTask를 호출 할 수있는 listItem을 클릭 할 때 – DJhon

+0

에서 많은 asyncTask를 호출 할 수있는 다른 AsyncTask.How를 호출 할 수있는 onProgressUpdate()를 생각한다. 그러나 이전 작업을 중지하고 새로운 작업을 시작합니다. –

+0

아래 링크를 참조하십시오. [http://stackoverflow.com/questions/4068984/running-multiple-asynctasks-at-the-same-time-not-possible ] [1] [1] : http://stackoverflow.com/questions/4068984/running-multiple-asynctasks-at-the-same-time-not-possible – MohdTausif

답변

1

하나의 활동에서 여러 가지 다른 서비스를 실행하려면 여러 스레드를 사용해야합니다.

+0

예, 처리 할 수있는 또 다른 옵션입니다. 하지만 asyncTask를 사용하여이 작업을 수행 할 수 있는지 알고 싶습니다. unflagged.destination @ –

+0

은 asyntask 코드를 –

+0

list.setOnItemClickListener (새 OnItemClickListener() { \t \t \t @Override \t \t \t 공공 무효 onItemClick (어댑터 뷰 AdapterView 부모,보기보기, INT 위치, 긴 ID) {fileDownloader.executeOnExecutor을 보여 ( \t \t \t \t \t \t AsyncTask.THREAD_POOL_EXECUTOR, \t \t \t \t \t \t MidnightUtility.KEY_DOWNLOAD _통로); \t \t \t} –

0

루프 내에 개체를 만듭니다.

// Click event for single list row 
list.setOnItemClickListener(new OnItemClickListener() { 
@Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
Toast.makeText(activity, "List Item Clicked", Toast.LENGTH_LONG) .show(); 
fileDownloader.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, Utility.KEY_DOWNLOAD_PATH); 

당신은 onclick 이벤트의 외부 fileDownoader을 정의하는 것으로 나타났습니다 : 문제가 fileDownloader 당신이 정의하는 방법에 같이

void stratTask(){ 
    for(String url:urls){ 
    AsyncTask asyncTask=new AsyncTask(); 
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){ 

      asyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, url); 
     } 
     else{ 
      asyncTask.execute(url); 
     } 
    } 
} 
+0

동일한 코드를 사용하고 있지만 현재 작업을 중지하고 새 작업을 시작합니다. –

+0

답변을 변경했습니다. 이제 시도해보십시오. – Sathish

+0

여전히 동일한 문제가 존재합니다. 지금 스레드로 시도 중입니다 –

0

는 것 같습니다. 따라서 실제로는 하나의 AsyncTask 만 있고 fileDownloader.executeOnExecuter를 실행하면 덮어 쓰고 이전 AsyncTask가 해당 객체에 할당됩니다.

FileDownloader 클래스가 단일 AsyncTasks (List) 목록을 포함하도록 변경할 수 있습니다. 단, 찾고있는 것을 구현할 수있는 유일한 방법은 아니지만.

+0

예, 지금 스레드로 시도하고 있습니다. –

관련 문제