Живые данные во вьюмодели можно просто наблюдать в одном месте?

У меня есть живые данные в модели просмотра. и я наблюдаю живые данные во фрагменте, другом классе,

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

Интересно, только одно место (например, фрагмент, активность и т. д.) может наблюдать живые данные модели просмотра?


person user1611241    schedule 10.01.2019    source источник
comment
Нет, вы можете создать несколько наблюдателей, которые будут реагировать на изменение MutableLiveData.   -  person Andriy Tereshko    schedule 10.01.2019
comment
Каждый класс, реализующий интерфейс LifecycleOwner, может наблюдать за объектами LiveData developer.android.com/reference / android / arch / жизненный цикл /   -  person Alex    schedule 10.01.2019
comment
@Alex Вам не нужно реализовывать LifecycleOwener, см. observeForever(). developer.android.com/reference/android/arch/lifecycle/   -  person m0skit0    schedule 10.01.2019
comment
@ m0skit0 ты прав.   -  person Alex    schedule 10.01.2019


Ответы (2)


Вы не понимаете это правильно. Способ работы MVVM - это взаимодействие просмотра с viewModel, который является классом наблюдателя, а viewModel затем взаимодействует с классом репо для операций с базой данных / удаленных операций. Причина, по которой вы наблюдаете живые данные во фрагменте / активности, заключается в том, что в соответствии с представлением схемы дизайна можно получить доступ только к ViewModel, поэтому вы можете наблюдать его только из класса фрагмента / активности

person Manuj Jagga    schedule 10.01.2019

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

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

person rupesh    schedule 10.01.2019
comment
Единственное условие - наблюдатель должен реализовать интерфейс LifecycleOwner. Неа. developer.android.com/reference/android/arch/lifecycle/ - person m0skit0; 10.01.2019