У вас есть две 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 - простая реализация обработчика потоков.