MVVM:复杂 View/ViewModel -> 多个 LiveData 对象?
MVVM: Complex View/ViewModel -> Multiple LiveData objects?
大多数 MVVM 示例都处理非常简单的用户界面。
但是假设我有一个 activity 有很多视图要更新(即大量数据)
正如我在其他地方读到的那样,多个 ViewModel 对象是一种糟糕的模式。
因此,据我所知,有两种解决方案:
创建一个包含所有其他数据对象的对象(和它的单个 LiveData)。
但这有一个问题 - 每个更新的数据对象都会导致整个 UI 更新。
创建多个对象(并为其创建多个 LiveData 对象)。
这意味着我需要观察每个 LiveData 对象。这个模式有问题吗?
提前致谢!
你提到的第一点: 是的,这不是最佳模式,但如果你的数据很小,那么分离 LiveDatas 会事倍功半
你提到的第二点: 是的,这是更优化的,你可以为每个要更新的视图创建一个 LiveData 对象,并从你的 activity 中观察它们或片段。此模式没有问题。
关于多个 ViewModels :
如果一个 ViewModel 中发生了太多事情(LiveData 对象或函数),那么同一 Activty/Fragment 中的多个 ViewModels 模式也是一种选择。这只是为了让 viewModels 更轻便而推荐的。所以只有当你有一个大的 viewModel class
时才使用它
- 为离散类型的信息创建
ViewModel
s。
例如,您可以有一个 UserViewModel
来处理关于 User
的所有状态。这意味着您可以在另一个上下文中使用相同的 ViewModel
,而无需提取可能不需要的数据(就像您只有一个上帝 ViewModel
时那样)。
- 根据需要为视图建模创建尽可能多的
LiveData
个对象。
最好尽可能将数据压缩成逻辑对象。如果只是为了让事情易于管理。
如果您有 User
,您应该将其用于您的 LiveData
,而不是将 LiveData
用于电子邮件地址、显示名称、年龄等。那将使您的数据绑定变得更加简单。尝试将事物按逻辑组合在一起。
大多数 MVVM 示例都处理非常简单的用户界面。
但是假设我有一个 activity 有很多视图要更新(即大量数据)
正如我在其他地方读到的那样,多个 ViewModel 对象是一种糟糕的模式。
因此,据我所知,有两种解决方案:
创建一个包含所有其他数据对象的对象(和它的单个 LiveData)。
但这有一个问题 - 每个更新的数据对象都会导致整个 UI 更新。创建多个对象(并为其创建多个 LiveData 对象)。
这意味着我需要观察每个 LiveData 对象。这个模式有问题吗?
提前致谢!
你提到的第一点: 是的,这不是最佳模式,但如果你的数据很小,那么分离 LiveDatas 会事倍功半
你提到的第二点: 是的,这是更优化的,你可以为每个要更新的视图创建一个 LiveData 对象,并从你的 activity 中观察它们或片段。此模式没有问题。
关于多个 ViewModels : 如果一个 ViewModel 中发生了太多事情(LiveData 对象或函数),那么同一 Activty/Fragment 中的多个 ViewModels 模式也是一种选择。这只是为了让 viewModels 更轻便而推荐的。所以只有当你有一个大的 viewModel class
时才使用它- 为离散类型的信息创建
ViewModel
s。
例如,您可以有一个 UserViewModel
来处理关于 User
的所有状态。这意味着您可以在另一个上下文中使用相同的 ViewModel
,而无需提取可能不需要的数据(就像您只有一个上帝 ViewModel
时那样)。
- 根据需要为视图建模创建尽可能多的
LiveData
个对象。
最好尽可能将数据压缩成逻辑对象。如果只是为了让事情易于管理。
如果您有 User
,您应该将其用于您的 LiveData
,而不是将 LiveData
用于电子邮件地址、显示名称、年龄等。那将使您的数据绑定变得更加简单。尝试将事物按逻辑组合在一起。