并行下载并通过AsyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXE



>我正在使用并行下载文件

asyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR)

我想要我添加的每个任务的个人进度。

ArrayList<AsyncTask> mListAsync = new ArrayList<>();
final DownloadTask downloadTask = new DownloadTask(mContext, name);
downloadTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,mVideoUrl.trim());
mListAsync.add(downloadTask );

上面是我用来下载文件的示例代码,我确实维护了一个数组列表来获取在 que 中添加了多少任务。

有什么方法可以让线程池中添加单个 AsyncTask 进度更新。

假设你的 DownloadTask 类使用 https://developer.android.com/reference/android/os/AsyncTask.html#publishProgress(Progress...( 方法,你可以在 https://developer.android.com/reference/android/os/AsyncTask.html#onProgressUpdate(Progress...( 的回调中获取当前进度

编辑: 一些带有回调的示例代码:

public class SampleTask extends AsyncTask<Void, Integer, String> {
private final int id;
private final ProgressCallback callback;
public SampleTask(int uniqueId, ProgressCallback callback){
this.id = uniqueId;
this.callback = callback;
}
@Override
protected String doInBackground(Void... voids) {
// do work and call publish progress in here
for(int i = 0; i <= 100; i++) {
try {
Thread.sleep(500);
} catch (InterruptedException e){
e.printStackTrace();
}
publishProgress(i);
}
return null;
}
@Override
protected void onProgressUpdate(Integer... values) {
//handle progress updates from in here
callback.onProgress(id, values[0]);
}
}
public interface ProgressCallback{
void onProgress(int uniqueId, int progress);
}

相关内容

  • 没有找到相关文章

最新更新