大多数MVVM示例都处理非常简单的用户界面。
但是假设我有一个包含许多视图需要更新的活动(即大量数据)
根据我在其他地方阅读到的信息,多个ViewModel对象是一种不好的模式。
因此,我认为有两种解决方案:
创建一个单一对象(和单一的LiveData对象),该对象包装了所有其他数据对象。
但是这会存在一个问题-每个更新的数据对象都会导致整个UI刷新。创建多个对象(和多个LiveData对象)。
这意味着我需要观察每个LiveData对象。 这种模式是否存在问题?
提前致谢!
大多数MVVM示例都处理非常简单的用户界面。
但是假设我有一个包含许多视图需要更新的活动(即大量数据)
根据我在其他地方阅读到的信息,多个ViewModel对象是一种不好的模式。
因此,我认为有两种解决方案:
创建一个单一对象(和单一的LiveData对象),该对象包装了所有其他数据对象。
但是这会存在一个问题-每个更新的数据对象都会导致整个UI刷新。
创建多个对象(和多个LiveData对象)。
这意味着我需要观察每个LiveData对象。 这种模式是否存在问题?
提前致谢!
你提到的第一点:是的,这不是最佳的解决方案,但如果你的数据量较小,则分离LiveData会付出更多的工作而获得较少的利益。
你提到的第二点:是的,这更加优化,您可以为要更新的每个视图拥有一个LiveData对象,并从您的活动或片段中观察它们。这种模式没有任何问题。
关于多个ViewModels:在同一个Activity/Fragment中使用多个ViewModels模式也是一个选项,如果您在一个ViewModel类中有太多的事情(LiveData对象或函数)发生。这仅建议使viewModels轻便。因此,只有在您拥有大型viewModel类时才使用它。
ViewModel
。例如,您可以拥有一个处理有关 User
的所有状态的 UserViewModel
。这意味着您可以在另一个上下文中使用相同的 ViewModel
,而不必拉取可能不必要的数据(如果您只有一个单一的 ViewModel
,那么会这样做)。
LiveData
对象来建模您的视图。最好将数据压缩成逻辑对象,以使事情易于管理。
如果您有一个 User
,则应该使用它作为您的 LiveData
,而不是拥有一个用于电子邮件地址、显示名称、年龄等的 LiveData
。这将使您的数据绑定变得更加简单。尝试将事物逻辑地分组在一起。