Восстанавливает ли FragmentManager свое состояние после смерти процесса

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

Ответ

Да, FragmentManager автоматически восстанавливает состояние фрагментов после смерти процесса благодаря механизму onSaveInstanceState(). При пересоздании активити система сохраняет:

  1. BackStack фрагментов
  2. Состояние добавленных фрагментов (через Fragment.SavedState)
  3. Аргументы фрагментов (Bundle)

Важные нюансы:

  • Восстанавливаются только фрагменты с ненулевым ID или тегом
  • Не восстанавливаются фрагменты, добавленные транзакцией без commitAllowingStateLoss()
  • В onCreate() активити нужно проверять savedInstanceState == null перед созданием новых фрагментов

Пример:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    if (savedInstanceState == null) {
        supportFragmentManager.beginTransaction()
            .add(R.id.container, MyFragment())
            .commit()
    }
    // Существующий фрагмент восстановится автоматически
}