Ответ
Пересоздание Activity вызывают следующие основные причины:
- Изменение конфигурации (поворот экрана, изменение языка, размера шрифта)
- Нехватка памяти (система убивает Activity для освобождения ресурсов)
- Явный вызов
recreate() - Смена темы приложения во время работы
Пример обработки поворота экрана:
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"
(но это не рекомендуется для большинства случаев)