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

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

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

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

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.

Intereting Posts
Скольжение между изображениями android Android: диалог выбора времени NullPointerException пытается получить savedInstanceState с помощью Custom Class Array Android – ошибка повторной записи профайла Proguard – Библиотека поддержки Android Как создать Android 2D-игру? Отправить запрос через WiFi (без подключения), даже если мобильные данные включены (с подключением) на Android M Каков правильный способ получить данные у поставщика контента, если у вас есть строка uri? android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:3147) Произошла непредвиденная ошибка: ant jar> / dev / null завершен с 127 в телефонной запинке Как правильно отвязать услуги Как создать проект Flutter с Android-файлом Android? Для проектов библиотек андроида, <uses-sdk> имеет смысл в манифесте? Android Dev Tutorial: что такое `Infinity` в примере ViewPager? Android ListView в действии становится обновленным при изменении ориентации Android Studio: новый созданный каталог не отображается в папках