我正在创建下载管理器,我想在其中同时下载多个文件并更新每次下载的进度。我使用以下行来执行AsyncTask
executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,Utility.KEY_DOWNLOAD_PATH);
但它不会启动多个AsyncTask。当我点击下一个下载时,它会先停止并开始新的下载。
先谢谢
答案 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)的列表,尽管这不是实现所需内容的唯一方法。