Ответ
Метод onDestroy() вызывается перед уничтожением Activity. Его особенности:
- Не гарантируется вызов – система может убить процесс без вызова
onDestroy()(например, при нехватке памяти). - Финализация ресурсов – здесь стоит освобождать тяжелые ресурсы (закрывать соединения, отменять запросы).
- Не для сохранения данных – для сохранения состояния используйте
onSaveInstanceState(). - Проверка isFinishing() – помогает отличить реальное завершение от конфигурационных изменений.
Пример:
override fun onDestroy() {
super.onDestroy()
if (isFinishing) {
// Освобождаем ресурсы только при реальном завершении
myDatabase.close()
}
}