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

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

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

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

Solutions Collecting From Web of "Что происходит при запуске AsyncTasks при изменении Activity?"

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

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

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

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

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

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