0

Когда я запускаю несколько AsyncTasks на мой взгляд, используя флаг AsyncTask.THREAD_POOL_EXECUTOR Я обнаружил, что одновременно работает не более двух AsyncTasks. Фактически, когда два AsyncTasks завершают свою работу, следующие два начинаются. Я также пробую этот проект AsyncTask в github. Я получил тот же результат, глядя на logcat там, где не более двух AsyncTasks работает одновременно.Невозможно запустить более двух асинтетов одновременно

Как я могу запустить более двух асинхронных задач одновременно?

+2

Использование Исполнителя – Blackbelt

+0

@blackbelt У вас есть пример кода или полезная ссылка? –

+2

для Исполнителя? Взгляните на документацию :) – Blackbelt

ответ

2

documentation The говорит:

Когда впервые, AsyncTasks были выполнены поочередно на одном фоновом потоке. Начиная с DONUT, это было изменено на пул из потоков, что позволяет нескольким задачам работать параллельно. Начиная с HONEYCOMB, задачи выполняются в одном потоке, чтобы избежать общих ошибок приложений , вызванных параллельным выполнением.

Так что означает, что они выполняются на одном потоке, то есть, по умолчанию, вы можете иметь только один AsyncTask активно в то время.

Но, не бойтесь, документация и другие состояния:

Если вы действительно хотите параллельного выполнения, вы можете вызвать executeOnExecutor (java.util.concurrent.Executor, Object []) с THREAD_POOL_EXECUTOR.

Так ... new MyTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);

будет делать трюк для вас.

+1

Но я уже сказал, что использую этот флаг. –

Смежные вопросы