Если у меня есть AsyncTask, работающая на неопределенный срок, и Android решает, что ей нужно убить задачу либо для освобождения памяти, либо из-за того, что устройство переходит в спящий режим (пользователь нажимает кнопку питания), есть ли каким-то образом в AsyncTask получить уведомление от ОС о том, что он вот-вот будет убит, чтобы можно было предпринять какие-либо действия для выполнения любой задачи?Обнаруживает, когда Android убивает AsyncTask
ответ
Чтобы дать вам краткий ответ:
AsyncTask живет до тех пор, как процесс он привязан к жизни. ОС никогда не будет убивать AsyncTask, если ее процесс все еще работает (даже в фоновом режиме).
Также обратите внимание, что AsyncTask работает независимо от Activity, которая его запускала. Активность может быть уничтожена, и AsyncTask продолжает работать до тех пор, пока процесс не будет уничтожен.
EDIT Вы должны вызвать isCancelled() внутри doInBackground() метод для того, чтобы убедиться в том, что, когда AsyncTask разрушается ОС, doInBackground заканчивается так, что метод onCancelled() выполняется.
Итак, чтобы подвести итог: в методе doInBackground всегда проверяйте функцию isCancelled boolean. Если он вернет true, вернитесь из doInBackground. Автоматически функция onCancelled будет выполнена вместо onPostExecute. Там вы можете поместить код, который хотите выполнить до его смерти.
Я не верю, что это правда. ОС, безусловно, убьет все, что она сочтет необходимыми, даже переднего плана в суровых условиях. Если ОС способна убить службу переднего плана, то, разумеется, не стоит дважды думать об уничтожении AsyncTask. – AndroidDev
В «суровых условиях» он убьет весь процесс. Он не может убить только AsyncTask. –
Также вы должны хранить ссылку на AsyncTask и проверять ее, когда вам нужно знать, жив ли она. –
- 1. Что убивает Android AsyncTask?
- 2. убивает Android AsyncTask с таймаутом
- 3. AsyncTask убивает мое приложение, когда я выполняю метод ProgressDialog.show()
- 4. Android: Уведомлять AsyncTask, когда завершена другая AsyncTask
- 5. Java Android AsyncTask - Когда AsyncTask перестает работать?
- 6. Android обнаруживает, когда активность разрушена
- 7. Android убивает мои темы/AsyncTasks
- 8. Что происходит, когда пользователь убивает приложение (Android)?
- 9. «убивает -QUIT» когда-либо убивает JVM?
- 10. Android обнаруживает, когда DownloadManager закончил загрузку
- 11. обнаруживает, когда приложение использует разрешения ~ Android
- 12. Android обнаруживает клики, когда он не должен
- 13. Android обнаруживает, когда автомобиль замедляется и парковка
- 14. Android AsyncTask внутри AsyncTask
- 15. Android как остановить/отменить AsyncTask, когда запущено слишком много AsyncTask?
- 16. Android убивает мой сервис?
- 17. Android - ошибка AsyncTask, когда ListView пуст?
- 18. Android AsyncTask в другой AsyncTask
- 19. Android PageTransformer убивает Просмотреть функциональность
- 20. MvvmCross android linker убивает привязку
- 21. обнаруживает, когда выполняется ajax.
- 22. обнаруживает, когда страница прокручивается
- 23. Android не убивает связанную службу
- 24. Метод OnClick убивает приложение android
- 25. Asynctask android
- 26. Работник Android обнаруживает состояние закрытия операции
- 27. Android иногда принудительно убивает приложение
- 28. Данные локального хранилища скрываются, когда приложение убивает в Android 5.0.2
- 29. Состояние GPE, теперь, когда Google убивает ADT (плагин Android eclipse)?
- 30. Android: Activity.onDestroy() не называется, когда Dalvik убивает эту активность
Это не отвечает на мой вопрос. Мой вопрос заключается не в длительности операций. Речь идет об обнаружении убийства нити. – AndroidDev
Вы не можете обнаружить убийство потока, возможно, этот обратный вызов будет полезен: '' 'Application.onLowMemory()' '' –
Как насчет использования AsyncClass.isCancelled() - возвращает true, если эта задача была отменена до ее завершения ИЛИ AsyncClass.cancel (boolean) - пытается отменить выполнение этой задачи? – AndiM