Для чего нужен метод setRetainInstance у Fragment

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

Ответ

Метод setRetainInstance(true) позволяет сохранить фрагмент при изменении конфигурации (например, повороте экрана), не уничтожая его. Вместо этого фрагмент переподключается к новой активности.

Когда использовать:

  • Для сохранения тяжелых объектов (например, загруженных данных или AsyncTask)
  • Когда пересоздание фрагмента затратно

Ограничения:

  • Работает только для фрагментов без UI (add() без commit() или detach())
  • Не сохраняет View состояние

Пример:

override fun onCreate(savedInstanceState: Bundle?) {  
    super.onCreate(savedInstanceState)  
    retainInstance = true  
}  

⚠️ Вместо этого сейчас чаще используют ViewModel + SavedStateHandle.