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

时间:2018-11-07 08:08:52

标签: android mvvm android-livedata

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

但是可以说我有一个活动需要更新许多视图(即大量数据)

当我在其他地方阅读时,多个ViewModel对象是错误的模式。

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

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

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

预先感谢!

2 个答案:

答案 0 :(得分:1)

您提到的第一个要点:是的,这不是最佳的模式,但是如果您的数据量较小,那么分离LiveDatas会带来更多的工作,而收益却更少

您提到的第二点:是的,这是最佳选择,您可以为要更新的每个视图都拥有一个LiveData对象,并从活动或片段中观察它们。此模式没有问题。

关于Mutilple ViewModel: 如果在一个ViewModel中发生了太多事情(LiveData对象或函数),则在同一活动/片段中使用多个ViewModels模式也是一种选择。仅建议这样做以使viewModels更轻。因此,只有在您有一个较大的viewModel类时才使用它

答案 1 :(得分:1)

  1. 为离散类型的信息创建ViewModel

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

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

在可能的情况下,最好将数据压缩为逻辑对象。如果只是为了使事情易于管理。

如果您有User,则应将其用于LiveData,而不是将LiveData用于电子邮件地址,显示名称,年龄等。数据绑定要简单得多。尝试将所有内容按逻辑分组。