Как использовать ExecutorService с Android AsyncTask? - PullRequest
12 голосов
/ 29 февраля 2012

Мне нужно выполнить несколько AsyncTask с, а затем собрать все их результаты, объединить и затем вернуть окончательный результат моему пользователю.

Я ищу способ управления несколькими AsyncTask в Android.Я думаю об использовании ExecutorService из пакета Java Concurrency, но я застрял, потому что ExecutorService принимает либо Runnables, либо Callables ТОЛЬКО.Чтобы установить мое требование, я могу использовать

ExecutorService.invokeAll((Collection<? extends Callable<T>> tasks)

. Метод invokeAll() вернет список List<Future><V>> только тогда, когда все отправленные задачи будут выполнены, и я смогу получить результаты длякаждая задача от соответствующей Future.

Все хорошо с ExecutorService ожидайте того факта, что она не принимает AsyncTask.

Есть ли другой способ использования AsyncTask и ExecutorService или, если вы можете, пожалуйста, порекомендуйте другой подход.

1 Ответ

2 голосов
/ 29 февраля 2012

Создайте AsyncTask и начните свои темы с doInBackground().Когда они будут выполнены, соберите, объедините и т. Д. Данные и верните их.Затем вы можете использовать его в onPostExecute для обновления пользовательского интерфейса.Запуск слишком большого количества потоков будет занимать память, поэтому вы должны подумать, нужно ли им работать параллельно.

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