Выбор ответа Middle Жизненный цикл Activity и Fragment спрашивают часто обновлено

Жизненный цикл фрагмента и его view

Вопрос

Фрагмент ушёл в back stack при замене другим фрагментом. Какие колбэки он получит?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: onPause, onStop, onDestroyView, но не onDestroy. При замене с добавлением в back stack view фрагмента уничтожается, а сам фрагмент остаётся в памяти, чтобы вернуться.

Варианты ответа

  1. onPause, onStop, onDestroy, onDetach
  2. Никаких: фрагмент остаётся активным под новым
  3. onPause, onStop, onDestroyView, но не onDestroyправильный ответ
  4. Один onDestroyView, без onPause и onStop

Разбор

При замене с добавлением в back stack view фрагмента уничтожается, а сам фрагмент остаётся в памяти, чтобы вернуться. Поэтому onDestroyView вызывается, а onDestroy и onDetach нет. При возврате снова будет onCreateView. Отсюда правило: всё, что связано с view (binding, подписки на UI), привязывают к viewLifecycleOwner.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.