Как FragmentManager узнает что надо вызывать метод onSavedStateHandle

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

Ответ

FragmentManager автоматически вызывает onSaveInstanceState() для фрагментов при уничтожении активности (например, при повороте экрана). Сохраненное состояние передается в onCreate(), onCreateView() и onViewStateRestored(). Для ViewModel используется SavedStateHandle, который автоматически сохраняет/восстанавливает данные через ViewModelProvider.

Пример с SavedStateHandle:

class MyViewModel(savedStateHandle: SavedStateHandle) : ViewModel() {
    val liveData = savedStateHandle.getLiveData<String>("key")

    fun saveData(value: String) {
        savedStateHandle.set("key", value)
    }
}

Механизм работает благодаря:

  1. Фрагмент реализует интерфейс SavedStateRegistryOwner
  2. ViewModel получает SavedStateHandle через фабрику
  3. При восстановлении данные автоматически подтягиваются из Bundle