【发布时间】:2019-07-02 10:43:53
【问题描述】:
我的项目中有一个复杂的屏幕,我要拆分多个片段。我正在尝试遵循这些类的 MVVM 架构,因此哪个片段有自己的 ViewModel 和 Contract 类。
问题是所有 ViewModel 都需要相同的对象实例(我们称之为Book)来执行 Room 事务。
是否有正确的方法在 ViewModel 之间共享数据(或 LiveData)?我知道 Shared ViewModel 的概念,但我不知道我是否可以将它应用到这个案例中。我也考虑过使用MediatorLiveData,但也没有找到好的方法。
我正在考虑创建一个带有LiveData<Book>(或Rx Subject<Book>)的类(我们称之为BookObservableProvider),其中每个ViewModel 注入相同的实例并加载/更新始终相同的值。
这是一个好方法吗?
【问题讨论】:
-
每个活动使用单个 ViewModel,因此您的 Fragment 将自动共享相同的 ViewModel。
-
@RoshaanFarrukh 拆分类的目的是不让 ViewModel 膨胀,因为 ViewModel 将来会有更多的方法。
-
你找到好方法了吗?目前,我正在通过其中一个 SharedViewModel 中的存储库获取数据,然后在我的活动中观察这些数据。在观察函数调用中,我还将它更新为其他 ViewModel 实例,我也在我的所有片段中访问它们。
-
@IgorEscodro 我想我也有同样的问题:stackoverflow.com/q/60796010/8258130你解决了你的问题吗?请分享
-
@nulldroid 是的。那也可以!如果你想到了,你能在这里查看我的帖子吗stackoverflow.com/q/60796010/8258130
标签: android android-livedata android-viewmodel android-mvvm