一个视图模型中的实时数据只能被一个地方观察到吗?

时间:2019-01-10 09:25:00

标签: android android-livedata

我在viewmodel中有一个livedata。 我在一个片段,另一个类中观察实时数据

当我更改livedata值时,只有片段可以接收livedata更改的通知。不是另一个班级。

我想知道只有一个地方(例如片段,活动等)可以观察viewmodel的实时数据吗?

2 个答案:

答案 0 :(得分:2)

您做得不好。 MVVM的工作方式是,视图与作为观察者类的viewModel进行交互,然后viewModel与用于数据库/远程操作的repo类进行交互。之所以要观察片段/活动中的实时数据,是因为按照设计模式视图只能访问ViewModel,这就是为什么您只能从片段/活动类中观察它的原因

答案 1 :(得分:0)

实时数据可以被任意数量的观察者观察到。观察者(如果实现了LifecycleOwner接口)将在运行状态下得到通知,或者您可以使用observeForever永久观察该数据,而不管观察者的生命周期如何。但是您将必须手动删除观察者以停止对其进行观察。

如果LiveData的生命周期处于STARTEDRESUMED状态,则它认为由Observer类表示的观察者处于活动状态。 LiveData仅将有关更新的信息通知活动的观察者。注册观看LiveData对象的不活动观察者不会收到有关更改的通知。