Обозреватель всегда срабатывает, когда приложение приходит из фона - PullRequest
1 голос
/ 20 сентября 2019

Я использую livedata во фрагменте, который находится в окне просмотра.Я наблюдаю liveData в onActivityCreated() и отображаю данные в виде списка.Пока все хорошо, и у меня нет проблем.С другой стороны, когда я помещаю приложение в фоновый режим и возвращаюсь на любую страницу моего окна просмотра, снова вызывается Observer, и я не понимаю, почему!Пожалуйста, помогите мне понять.Я даже не прошёл onResume() фрагмента, о котором идет речь.

Ответы [ 2 ]

3 голосов
/ 20 сентября 2019

Как вы можете видеть на прилагаемом изображении, жизненный цикл фрагмента мало отличается от жизненного цикла, при переходе фрагмента к фону происходит вызов следующих функций:

onPause() -> onStop() -> onDestroyView()

и при вызовеВозвращаясь к представлению, он вызывает следующие функции

onCreateView() -> onActivityCreated() ->  onStop() -> onResume()

Следовательно, наблюдатель снова вызывается в методе onActivityCreated ().Если вы хотите, чтобы ваш наблюдатель больше не вызывался, вы должны добавить его в метод onCreate () соответствующего фрагмента.

0 голосов
/ 20 сентября 2019

LiveData считает, что наблюдатель, представленный классом Observer, находится в активном состоянии, если его жизненный цикл находится в состоянии STARTED или RESUMED.LiveData только уведомляет активных наблюдателей об обновлениях.Неактивные наблюдатели, зарегистрированные для просмотра объектов LiveData, не уведомляются об изменениях.

...