Что вызывает пересоздание Activity

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

Ответ

Пересоздание Activity вызывают следующие основные причины:

  1. Изменение конфигурации (поворот экрана, изменение языка, размера шрифта)
  2. Нехватка памяти (система убивает Activity для освобождения ресурсов)
  3. Явный вызов recreate()
  4. Смена темы приложения во время работы

Пример обработки поворота экрана:

override fun onSaveInstanceState(outState: Bundle) {
    super.onSaveInstanceState(outState)
    outState.putString("KEY", "Important data")
}

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    val data = savedInstanceState?.getString("KEY") ?: "Default"
}

Для сохранения состояния используйте onSaveInstanceState(), а для сложных данных - ViewModel. Чтобы избежать пересоздания при повороте, добавьте в манифест:

android:configChanges="orientation|screenSize"

(но это не рекомендуется для большинства случаев)