Всегда ли гарантирован вызов метода onDestroy у Activity

«Всегда ли гарантирован вызов метода onDestroy у Activity» — вопрос из категории Android компоненты, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Нет, onDestroy() не всегда вызывается. Например, если система убивает процесс приложения из-за нехватки памяти, onDestroy() не успеет выполниться. Также при быстром завершении через finish() или System.exit() метод может пропуститься.

Пример:

override fun onDestroy() {
    super.onDestroy()
    // Не гарантируется, что этот код выполнится
    cleanupResources()
}

Рекомендации:

  • Не полагайтесь только на onDestroy для освобождения критичных ресурсов
  • Используйте onStop() для важной логики, так как он вызывается чаще
  • Для долгоживущих операций используйте сервисы или WorkManager