Java AsyncTask.THREAD\u池\u执行器返回值

Java AsyncTask.THREAD\u池\u执行器返回值,java,android,multithreading,android-asynctask,Java,Android,Multithreading,Android Asynctask,如何在不使用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.execu

如何在不使用
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);
}
如何在不使用get()的情况下将多个AsyncTask的值返回到列表中

你没有<代码>异步任务是异步的,在后台线程上执行其工作


相反,请重写
UploadImage
以获取整个文件集,让它处理所有文件,并使用
onPostExecute()

中的结果。您可以创建一个倒计时闩锁,该闩锁带有一个计数器,指示您有多少异步 然后等待它达到0

CountDownLatch cdl = new CountDownLatch(3);
Async1.oncomplete - > cdl.countDown();
Async2.oncomplete - > cdl.countDown();
Async3.oncomplete - > cdl.countDown();
cdl.await

但这并不会返回每个异步的值,它只是等待所有操作完成。从我的代码中删除
get()
并添加
CountDownLatch
就是这样做的。您应该能够在等待后返回。