Вступить в клуб →
средняявопросKotlin и жизненный цикл Android

Подписка во фрагменте с this вместо владельца жизненного цикла View

Во фрагменте списка заказов подписка оформлена так:

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    viewModel.orders.observe(this) { adapter.submitList(it) }
}

Пользователь уходит с этого фрагмента на другой экран и возвращается назад несколько раз. Что происходит с подписками?

  • Приложение падает при первом же обновлении данных после возврата: обработчик обращается к View, которой уже нет в иерархии
  • Ничего особенного: подписка снимается автоматически в момент уничтожения вёрстки, при возврате остаётся ровно одна активная подписка
  • Подписок становится всё больше: фрагмент живёт дольше своей вёрстки, и старые подписки держат уничтоженные View
  • Подписка теряется совсем: после первого же возврата данные в этот фрагмент больше не приходят, пока не пересоздать весь экран

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела