Ответ
Нет, onDestroy() не всегда вызывается. Например, если система убивает процесс приложения из-за нехватки памяти, onDestroy() не успеет выполниться. Также при быстром завершении через finish() или System.exit() метод может пропуститься.
Пример:
override fun onDestroy() {
super.onDestroy()
// Не гарантируется, что этот код выполнится
cleanupResources()
}
Рекомендации:
- Не полагайтесь только на
onDestroyдля освобождения критичных ресурсов - Используйте
onStop()для важной логики, так как он вызывается чаще - Для долгоживущих операций используйте сервисы или WorkManager