Как мне вернуть значения нескольких 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);
}




How do I return the values of multiple AsyncTask into a list without using 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- вот и все, что нужно сделать.