Какие знаешь способы обработки смены ориентации Activity

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

Ответ

При смене ориентации Activity пересоздается. Основные способы обработки:

  1. Сохранение состояния через onSaveInstanceState():
override fun onSaveInstanceState(outState: Bundle) {
    outState.putString("KEY", importantData)
    super.onSaveInstanceState(outState)
}
  1. Восстановление в onCreate():
override fun onCreate(savedInstanceState: Bundle?) {
    if (savedInstanceState != null) {
        importantData = savedInstanceState.getString("KEY")
    }
}
  1. Фиксация ориентации в манифесте:
<activity android:screenOrientation="portrait" />
  1. Ручная обработка конфигурации в манифесте:
android:configChanges="orientation|screenSize"

и переопределение onConfigurationChanged()

  1. ViewModel - сохраняет данные при повороте экрана

Для простых данных лучше использовать ViewModel или Bundle, для сложных случаев - комбинацию подходов. Фиксацию ориентации стоит применять осторожно.