MVVM:复杂 View/ViewModel -> 多个 LiveData 对象?

MVVM: Complex View/ViewModel -> Multiple LiveData objects?

大多数 MVVM 示例都处理非常简单的用户界面。

但是假设我有一个 activity 有很多视图要更新(即大量数据)

正如我在其他地方读到的那样,多个 ViewModel 对象是一种糟糕的模式。

因此,据我所知,有两种解决方案:

  1. 创建一个包含所有其他数据对象的对象(和它的单个 LiveData)。
    但这有一个问题 - 每个更新的数据对象都会导致整个 UI 更新。

  2. 创建多个对象(并为其创建多个 LiveData 对象)。
    这意味着我需要观察每个 LiveData 对象。这个模式有问题吗?

提前致谢!

你提到的第一点: 是的,这不是最佳模式,但如果你的数据很小,那么分离 LiveDatas 会事倍功半

你提到的第二点: 是的,这是更优化的,你可以为每个要更新的视图创建一个 LiveData 对象,并从你的 activity 中观察它们或片段。此模式没有问题。

关于多个 ViewModels : 如果一个 ViewModel 中发生了太多事情(LiveData 对象或函数),那么同一 Activty/Fragment 中的多个 ViewModels 模式也是一种选择。这只是为了让 viewModels 更轻便而推荐的。所以只有当你有一个大的 viewModel class

时才使用它
  1. 为离散类型的信息创建 ViewModels。

例如,您可以有一个 UserViewModel 来处理关于 User 的所有状态。这意味着您可以在另一个上下文中使用相同的 ViewModel,而无需提取可能不需要的数据(就像您只有一个上帝 ViewModel 时那样)。

  1. 根据需要为视图建模创建尽可能多的 LiveData 个对象。

最好尽可能将数据压缩成逻辑对象。如果只是为了让事情易于管理。

如果您有 User,您应该将其用于您的 LiveData,而不是将 LiveData 用于电子邮件地址、显示名称、年龄等。那将使您的数据绑定变得更加简单。尝试将事物按逻辑组合在一起。