是否可以同时创建多个AsyncTask?

时间:2014-05-22 10:28:53

标签: android android-asynctask

我正在创建下载管理器,我想在其中同时下载多个文件并更新每次下载的进度。我使用以下行来执行AsyncTask

executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,Utility.KEY_DOWNLOAD_PATH);

但它不会启动多个AsyncTask。当我点击下一个下载时,它会先停止并开始新的下载。

先谢谢

3 个答案:

答案 0 :(得分:1)

您必须使用多个线程在一个活动上运行不同的不同服务。

答案 1 :(得分: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);
        }
    }
}

答案 2 :(得分: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)的列表,尽管这不是实现所需内容的唯一方法。