Когда вызывается onSaveInstanceState у Activity

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

Ответ

Метод onSaveInstanceState() вызывается перед тем, как система может уничтожить Activity (например, при повороте экрана, выходе из приложения или при нехватке памяти). Он позволяет сохранить временные данные в Bundle, которые затем передаются в onCreate() или onRestoreInstanceState() при восстановлении.

Пример:

override fun onSaveInstanceState(outState: Bundle) {
    super.onSaveInstanceState(outState)
    outState.putString("KEY_TEXT", editText.text.toString())
}

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    val savedText = savedInstanceState?.getString("KEY_TEXT") ?: ""
    editText.setText(savedText)
}

Важно:

  • Не сохраняйте тяжелые объекты (например, Bitmap).
  • Для постоянного хранения используйте ViewModel или базу данных.
  • Не вызывается при явном завершении (например, finish()).