В каком случае вызов onDestroy у Activity может не произойти

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

Ответ

onDestroy() может не вызваться в нескольких случаях:

  1. Принудительное завершение процесса - если система убивает процесс приложения из-за нехватки памяти или пользователь принудительно останавливает приложение в настройках.

  2. Системный сбой - аппаратные сбои, перезагрузка устройства или серьезные ошибки в системе Android.

  3. Конфигурационные изменения - при повороте экрана onDestroy() вызывается, но сразу после этого Activity воссоздается. Однако если в манифесте указано android:configChanges, система может пропустить уничтожение.

Пример конфигурационных изменений:

<activity 
    android:name=".MainActivity"
    android:configChanges="orientation|screenSize"/>

Важно не полагаться на onDestroy() для критически важных операций - используйте onPause() или onStop().