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
就是这样做的。您应该能够在等待后返回。