Цитируя документацию по AsyncTask, найденную здесь, она гласит:
AsyncTasks в идеале следует использовать для коротких операций (максимум несколько секунд). Если вам нужно, чтобы потоки работали в течение длительного периода времени, настоятельно рекомендуется использовать различные API, предоставляемые пакетом java.util.concurrent, такие как Executor, ThreadPoolExecutor и FutureTask.
Теперь у меня возникает вопрос: почему? Функция doInBackground()
запускается из потока пользовательского интерфейса, так какой же вред, если здесь выполняется длительная операция?