Ответ
Да, FragmentManager автоматически восстанавливает состояние фрагментов после смерти процесса благодаря механизму onSaveInstanceState(). При пересоздании активити система сохраняет:
- BackStack фрагментов
- Состояние добавленных фрагментов (через
Fragment.SavedState) - Аргументы фрагментов (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()
}
// Существующий фрагмент восстановится автоматически
}