Как я могу убедиться, что все мои асинхронные операции, запущенные параллельно, завершили выполнение? Я запускаю несколько асинтетов параллельно с помощью executer. Нужно знать, что все закончили свою задачу.Параллельное состояние выполнения AsyncTask
ответ
Самый простой способ - отслеживать каждый AsyncTask
в List
или Map
. Когда они закончат, удалите их из трекера (в пределах onPostExecute()
). Когда все были удалены, все сделано. Будьте осторожны с ними, а также с другими методами нарезки: они не являются компонентом Android (Activity
, Service
).
Вы хотите сказать .. Запустите их и поместите в список и сделайте, пока (! ListIsEmpty) продолжайте ждать ..? –
Нет, не стоит так ждать. Они асинхронны, и если вы ждете и блокируете свое приложение, оно будет убито. –
Я так не думаю .. Я начинаю параллельные потоки из другого doynBackground asynctask() –
В качестве простого решения можно использовать переменную INT класса, как это:
private int TOTAL_ASYNC_TASKS_IN_PROGRESS = 0;
затем увеличить эту Int в методе onPreExecute()
и уменьшает эту Int в onPostExecute()
методы.
Если у вас будет это значение int = 0, это означает, что все ваши AsyncTasks выполнены.
Edit::
Вы должны использовать свою собственную реализацию ThreadPool Исполнителя и выполнить AsyncTasks с ThreadPool исполнителем, а не по умолчанию. Поскольку, используя предоставленный по умолчанию ThreadPool Executor, вы можете потерять емкость, выполняя слишком много множественных асинхронных задач.
Вот хороший учебник для реализации пользовательского ThreadPool Исполнителя:
http://www.javacodegeeks.com/2013/03/my-custom-thread-pool-executor-in-java.html
Я надеюсь, что это помогает.
Правильно ли это? Это первая мысль, которую я получил, чтобы разрешить ситуацию;) –
Кажется, это способ сделать это, я не уверен, что это правильный путь. Но это наверняка решит вашу проблему :) –
Спасибо .. Я попробую это.Существует ли наилучшая практика для одновременного запуска асинхронного или произвольного параллельного выполнения? –
- 1. параллельное выполнение AsyncTask
- 2. Замок/Состояние с помощью AsyncTask?
- 3. Состояние AsyncTask после отмены()?
- 4. Состояние AsyncTask равно
- 5. Состояние AsyncTask всегда работает
- 6. Состояние AsyncTask не подтверждено FINISHED
- 7. Параллельное состояние гонки на переднем плане
- 8. состояние AsyncTask когда активность разрушается
- 9. Android сохранить AsyncTask состояние/прогресс
- 10. onCreateView() ждет выполнения AsyncTask?
- 11. Индикатор выполнения AsyncTask
- 12. диалог выполнения с asynctask
- 13. Ошибка выполнения AsyncTask
- 14. Исключение времени выполнения AsyncTask
- 15. AsyncTask показывает индикатор выполнения
- 16. Ошибка выполнения с AsyncTask класс
- 17. Asynctask и промежуток времени выполнения
- 18. Android AsyncTask и индикаторы выполнения
- 19. же AsyncTask для параллельного выполнения
- 20. AsyncTask, который обновляет индикатор выполнения
- 21. Android AsyncTask doInBackground выполнения Исключение
- 22. Показать индикатор выполнения в AsyncTask
- 23. Сохранить состояние выполнения UICollectionViewCell
- 24. Параллельное и параллельное программирование
- 25. Как сохранить состояние AsyncTask при преобразовании устройства?
- 26. Параллельное использование ArrayList
- 27. AsyncTask execute() или executeOnExecutor()?
- 28. Как обрабатывать недопустимое состояние выполнения?
- 29. исключение во время выполнения при использовании AsyncTask
- 30. AsyncTask - после выполнения, как обновить представление?
Как вы получаете уведомление о том, что любая из ваших asyncTask завершила свою работу? – Darpan
Почему вы это делаете, не могли бы вы объяснить это. –
У меня есть один асинхронный запрос, который проверяет наличие определенных условий. Исходя из условия, я должен загрузить несколько файлов параллельно. Эти параллельные загрузки начинаются с с первого async. Теперь у меня есть 3-4 асинхронные параллели с firat. Как обеспечить, чтобы все эти асинхи завершили свое исполнение? Я хочу выполнить оставшуюся работу в первом асинхронном режиме после того, как все выполнили. –