Понимание setRetainInstance (логическое значение) фрагмента

Начиная с документации:

public void setRetainInstance (логическое сохранение)

Управляет тем, сохраняется ли экземпляр фрагмента при повторном создании Activity (например, при изменении конфигурации). Это можно использовать только с фрагментами, не находящимися в заднем стеке. Если установлено, жизненный цикл фрагмента будет немного отличаться при воссоздании активности:

  • onDestroy() не будет вызываться (но onDetach() все равно будет вызываться, потому что фрагмент отсоединяется от текущей активности).
  • onCreate(Bundle) не будет вызываться, так как фрагмент не создается заново.
  • onAttach(Activity) и onActivityCreated(Bundle) по-прежнему будут вызываться.

У меня есть несколько вопросов:

  • Фрагмент также сохраняет свой вид или он будет воссоздан при изменении конфигурации? Что именно означает «сохранился»?

  • Будет ли фрагмент уничтожен, когда пользователь покинет активность?

  • Почему это не работает с фрагментами в заднем стеке?

  • В каких случаях имеет смысл использовать этот метод?

327
задан Alex Lockwood 1 March 2019 в 18:56
поделиться