簡體   English   中英

AsyncTask.THREAD_POOL_EXECUTOR返回值

[英]AsyncTask.THREAD_POOL_EXECUTOR return values

如何不使用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的值返回到列表中?

你不知道 AsyncTask是異步的,在后台線程上完成其工作。

相反,重寫UploadImage以獲取整個文件集,讓其處理所有文件,然后在onPostExecute()使用結果。

您可以創建一個具有多少異步計數器的倒計時鎖存器,然后等待它達到0

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM