У вас есть две AsyncTasks в одном действии?

Я уже разработал Activity, который будет анализировать данные JSON и отображать результаты в ListView. Для этой цели я использую AsyncTask.

Теперь я хочу, чтобы, когда я нажимаю элемент в ListView, файл должен начать загрузку. Могу ли я написать еще одну AsyncTask в том же самом действии, чтобы эта AsyncTask выполнила загрузку для меня? Есть ли проблема с наличием нескольких AsyncTasks в одной и той же активности?

Ответы

Ответ 1

Не должно быть никаких проблем с несколькими Asynctasks в одном действии. Вы должны быть осторожны, чтобы четко определить значения, которыми управляют каждый (например, если задача B полагается на значение, заданное задачей A, убедитесь, что A сначала должен закончить), но в целом это должно быть хорошо. У меня есть проект прямо сейчас с тремя asynctasks, запущенными при первой установке, и до сих пор он тикает по-хорошему.

Ответ 2

В соответствии с Doc да, вы можете.

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

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

BEst answer Как сам находится в stackoverflow.

Ответ 3

Да.. Вы можете.

AsyncTask - простая реализация обработчика потоков.