Ответ
Класс Application не имеет метода onDestroy, потому что процесс приложения может быть завершен системой в любой момент без вызова этого метода. Android управляет жизненным циклом процессов и убивает их при нехватке ресурсов.
onCreate вызывается при создании процесса, но onDestroy не гарантирован, так как:
- Система может убить процесс без предупреждения.
- Приложение может быть выгружено в фоне без уведомления.
Для очистки ресурсов лучше использовать другие механизмы:
Activity.onDestroy()для UI-компонентов.Service.onDestroy()для сервисов.ContentProviderилиViewModelдля данных.
Пример:
class MyApp : Application() {
override fun onCreate() {
super.onCreate()
// Инициализация библиотек
}
// Нет onDestroy!
} Ответ 18+ 🔞
Ну вот, объясняю на пальцах, почему в классе Application нету никакого onDestroy. Представь себе, что твой процесс в Android — это такой чувак, который зашёл в бар. Он может спокойно сидеть, пить пиво (это onCreate), но в любой момент вышибала-система может взять его за шкирку и выкинуть на мороз, даже не дав допить и не попрощавшись. Вот и вся философия.
onCreate — это когда процесс родился и говорит: «Ёпта, я живой!». А onDestroy — это как красивое прощание «до свидания», которого никогда не будет, потому что система просто возьмёт и впендюрит процесс в нирвану, когда ей понадобятся ресурсы. Доверия к тому, что тебя предупредят, — ноль ебать. Просто бах — и ты уже на том свете.
Поэтому сидеть и ждать onDestroy в Application — это всё равно что ждать, когда мартышка в зоопарке начнёт говорить с тобой на латыни. Хуй с горы дождёшься.
Для нормальной уборки за собой надо использовать другие крючки, которые хотя бы немного предсказуемы:
Activity.onDestroy()— когда закрывается окно (активность).Service.onDestroy()— когда сервис сворачивают.- Для данных — всякие
ContentProviderилиViewModel, они умнее в этом плане.
Смотри, как это выглядит в коде, ни хуя сложного:
class MyApp : Application() {
override fun onCreate() {
super.onCreate()
// Тут инициализируешь свои библиотеки, типа как разлил пиво по стаканам.
}
// А метода onDestroy тут НЕТУ И НЕ БУДЕТ! Забудь как страшный сон.
}
Короче, сам от себя охуел, когда это понял, но так уж устроена эта пиздопроебибна система. Не рассчитывай на вежливость, рассчитывай на внезапный пиздец.