大多数MVVM示例都处理非常简单的用户界面。
但是可以说我有一个活动需要更新许多视图(即大量数据)
当我在其他地方阅读时,多个ViewModel对象是错误的模式。
因此,据我所知,有两种解决方案:
创建一个包装所有其他数据对象的单个对象(以及单个LiveData)。
但这有一个问题-每个更新的数据对象都会导致整个UI发生更新。
创建多个对象(及其多个LiveData对象)。
这意味着我需要观察每个LiveData对象。这种模式有问题吗?
预先感谢!
答案 0 :(得分:1)
您提到的第一个要点:是的,这不是最佳的模式,但是如果您的数据量较小,那么分离LiveDatas会带来更多的工作,而收益却更少
您提到的第二点:是的,这是最佳选择,您可以为要更新的每个视图都拥有一个LiveData对象,并从活动或片段中观察它们。此模式没有问题。
关于Mutilple ViewModel: 如果在一个ViewModel中发生了太多事情(LiveData对象或函数),则在同一活动/片段中使用多个ViewModels模式也是一种选择。仅建议这样做以使viewModels更轻。因此,只有在您有一个较大的viewModel类时才使用它
答案 1 :(得分:1)
ViewModel
。例如,您可以有一个UserViewModel
处理有关User
的所有状态。这意味着您可以在另一个上下文中使用相同的ViewModel
,而不必提取不必要的数据(就像您只有一个上帝ViewModel
一样)。
LiveData
对象以对视图进行建模。在可能的情况下,最好将数据压缩为逻辑对象。如果只是为了使事情易于管理。
如果您有User
,则应将其用于LiveData
,而不是将LiveData
用于电子邮件地址,显示名称,年龄等。数据绑定要简单得多。尝试将所有内容按逻辑分组。