Подтвердить что ты не робот

Что происходит при запуске AsyncTasks при изменении Activity?

Пока функция сети работает в Asynctask, если пользователь нажимает кнопку "Назад" и переключается на другую активность, что произойдет с Asynctask, которая работает в фоновом режиме?

  • Процесс AsyncTask автоматически убивает ОС?

  • Async Task завершает всю операцию?

4b9b3361

Ответ 1

AsyncTask - абстрактный класс Android, который помогает приложениям Android эффективно обрабатывать поток основного интерфейса. Класс AsyncTask позволяет выполнять длительные задачи/фоновые операции и показывать результат в потоке пользовательского интерфейса, не затрагивая основной поток.

1. Процессы AsyncTask автоматически не уничтожаются ОС. Процессы AsyncTask выполняются в фоновом режиме, а отвечает за завершение собственной работы в любом случае. Вы можете отменить свою AsycnTask, вызвав метод cancel (true). Это вызовет последующие вызовы isCancelled(), чтобы вернуть true. После вызова этого метода метод onCancelled (Object) вызывается вместо onPostExecute() после возвращения doInBackground().

2.. После завершения операции поток фона, на котором он работает, остановлен. AsyncTask имеет onPostExecute(), который вызывается после завершения вашей работы. Этот метод вызывается после завершения метода doInBackground(). Результат от doInBackground() передается этому методу.

Ответ 2

Если вы запустите AsyncTask внутри Activity и вы повернете устройство, действие будет уничтожено, и будет создан новый экземпляр.

Аналогично, если пользователь перейдет к другому действию, текущая активность будет уничтожена или перейдет в фоновый стек активности, и новая активность будет на переднем плане.

Но AsyncTask не умрет. Он будет продолжаться до тех пор, пока он не завершится. И когда он завершится, AsyncTask не будет обновлять пользовательский интерфейс нового действия. Действительно, он обновляет прежний экземпляр активности, которая больше не отображается. Это может привести к исключению типа java.lang.IllegalArgumentException: View не подключен к оконному менеджеру, если вы используете, например, findViewById для получения представления внутри Activity.