2014-05-22 50 views
0

我正在創建下載管理器,我想在其中同時下載多個文件並更新每個下載的進度。我用下面的行執行的AsyncTask是否可以同時創建多個AsyncTask?

executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,Utility.KEY_DOWNLOAD_PATH); 

不過,這並不啓動多個的AsyncTask。當我點擊下一個下載時,它首先停止並開始新的下載。

由於提前

+0

我認爲onProgressUpdate()你可以調用另一個AsyncTask.How你可以在一次 – DJhon

+0

上點擊listItem我可以調用asyncTask調用許多asyncTask。但它停止前一個,並開始新任務 –

+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可以做到嗎? –

+0

@ unflagged.destination顯示您asyntask代碼 –

+0

list.setOnItemClickListener(新OnItemClickListener(){ \t \t \t @覆蓋 \t \t \t公共無效onItemClick(適配器視圖父,觀景,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

在循環內部創建對象。

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

它看起來像你的問題是你如何定義fileDownloader:

// 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。所以你實際上只有一個AsyncTask,並且當執行fileDownloader.executeOnExecuter時,你將覆蓋以及分配給該對象的前一個AsyncTask。

您可能需要更改FileDownloader類,使其包含一些AsyncTasks(List)列表,但這不是實現所需內容的唯一方法。

+0

是的,我現在正在嘗試線程 –

相關問題