Может ли onDestroy вызваться без вызова onPasuse и onStop

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

Ответ

Да, может. onDestroy() может быть вызван без предварительного вызова onPause() и onStop() в двух случаях:

  1. При завершении работы активити из onCreate() (например, если вызвать finish() внутри onCreate()).
  2. При уничтожении процесса системой (например, при нехватке памяти Android может убить процесс без вызова жизненного цикла).

Пример:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    finish() // onDestroy() вызовется сразу, минуя onPause/onStop
}