2015-09-21 3 views
0

android Asynctask был довольно часто изменен между различными уровнями API. Я разрабатываю приложение, в котором я должен загружать изображения на FTP-сервер. Я хочу сделать это в последовательном порядке (загрузка изображений после одного раза одной загрузкой изображения в asyntask). Я понимаю вещи SERIAL_EXECUTOR и THREAD_POOL_EXECUTOR, но мне просто нужна определенная информация о том, что такое поведение asynctask по умолчанию (мой минимальный целевой API - это ICS 4.0). если я просто исполняю, скажу 10 асинхронных циклов, они пойдут в очередь потоков и будут выполняться один за другим, или они просто перейдут параллельно?Что такое способ выполнения по умолчанию для AsyncTasks в Android?

+0

Если вы сами управляете потоками, я думаю, что прямо с использованием класса «Thread» и класса «Handler» может быть сокращен. Все будет под вашим контролем! – hata

ответ

3

Посмотрите в документации AsyncTask:

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

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

Итак, с минимальной целью 14, они будут сериализованы.

+0

только последняя строка - это то, что я искал, спасибо –

0

Вы не можете использовать одну асинхронную задачу с петлей внутри doInBackground()? Если вы хотите контролировать их, вы можете вызвать вторую асинхронную задачу сначала в onPostExecute().

+0

что было: async task Inside loop. –

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