AsyncTask.THREAD_POOL_EXECUTOR возвращает значения - PullRequest
0 голосов
/ 07 июня 2018

Как вернуть значения нескольких AsyncTask в список без использования get()?

В настоящее время я делаю это, но я знаю, что это неправильно.

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);
}

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Вы можете создать защелку обратного отсчета со счетчиком количества асинхронных операций. Затем подождите, пока она не достигнет 0

CountDownLatch cdl = new CountDownLatch(3);
Async1.oncomplete - > cdl.countDown();
Async2.oncomplete - > cdl.countDown();
Async3.oncomplete - > cdl.countDown();
cdl.await
0 голосов
/ 07 июня 2018

Как вернуть значения нескольких AsyncTask в список без использования get ()?

Вы не делаете.AsyncTask асинхронный, выполняет свою работу в фоновом потоке.

Вместо этого переписайте UploadImage, чтобы взять весь набор файлов, обработать их все и использовать результаты в onPostExecute().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...