如何在不使用get()
的情况下将多个AsyncTask的值返回到列表中?
我目前正在这样做,但我知道这不对。
for (int i=0; i != mediaList.size(); i++){
UploadImage uploadImage = new UploadImage(this,
new File(FileChooser.getPath(this, mediaList.get(i).uri)));
String x = uploadImage.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR).get();
mediaResult.add(x);
}
答案 0 :(得分:1)
如何在不使用get()?
的情况下将多个AsyncTask的值返回到列表中
你不是。 AsyncTask
是异步的,在后台线程上完成工作。
相反,重写UploadImage
以获取整个文件集,让它处理所有文件,并使用onPostExecute()
中的结果。
答案 1 :(得分:0)
您可以创建一个倒计时锁定器,其中包含您拥有多少个asyncs的计数器 然后等待它达到0
CountDownLatch cdl = new CountDownLatch(3);
Async1.oncomplete - > cdl.countDown();
Async2.oncomplete - > cdl.countDown();
Async3.oncomplete - > cdl.countDown();
cdl.await