【问题标题】:A livedata in a viewmodel can just observed by one place?视图模型中的实时数据只能在一个地方观察?
【发布时间】:2019-06-05 03:13:22
【问题描述】:

我在视图模型中有一个实时数据。 我观察一个片段中的实时数据,另一个类,

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

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

【问题讨论】:

标签: android android-livedata


【解决方案1】:

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

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

【讨论】:

【解决方案2】:

你没有做对。 MVVM 的工作方式是视图与作为观察者类的 viewModel 交互,然后 viewModel 与 repo 类交互以进行 db/remote 操作。您在片段/活动中观察实时数据的原因是因为根据设计模式视图只能访问 ViewModel,这就是为什么您只能从片段/活动类中观察它的原因

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-21
    • 2017-02-19
    • 2011-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多