首页 > 解决方案 > 在 ViewModel 之间共享数据

问题描述

我的项目中有一个复杂的屏幕,我要打破多个片段。我正在尝试遵循这些类的 MVVM 架构,因此哪个片段有自己的ViewModelContract 类。

问题是所有 ViewModel 都需要相同的对象实例(我们称之为Book)来执行 Room 事务。

它是否有正确的方法LiveData在 ViewModel 之间共享数据(或)?我知道 Shared ViewModel 的概念,但我不知道我是否可以将它应用到这个案例中。我也考虑过使用MediatorLiveData,但也没有得到好的方法。

我正在考虑有一个BookObservableProvider带有LiveData<Book>(或Rx Subject<Book>)的类(让我们调用),其中每个 ViewModel 注入相同的实例并加载/更新始终相同的值。

这是一个好方法吗?

标签: androidandroid-livedataandroid-viewmodelandroid-mvvm

解决方案


您应该在片段/活动之间共享这些数据(可能使用 Intents 进行活动),而不是由其他 ViewModel 处理这些数据


推荐阅读