首页 > 解决方案 > Android mvvm 我应该在两个视图中使用 2 个 ViewModel、1 个 ViewModel,还是在父活动中使用 1 个?

问题描述

鉴于这种情况:ProfileActivity 和 EditProfileActivity 都从 BaseActivity 扩展,每个活动是否应该有自己的视图模型(ProfileViewModel 和 EditProfileViewModel),在两个活动中使用相同的视图模型,还是从父级继承模型但在每个活动中反对它?

谢谢

标签: androidmvvmviewmodel

解决方案


这取决于您的 ViewModel 的范围。如果您希望您的活动相互通信,那么您可以创建一个范围为您的 BaseActivity 的 BaseViewModel 并使用它在 ProfileActivity 和 EditProfileActivity 之间进行 IPC,因为它们会消耗 BaseActivity。

您还可以创建三个视图模型,每个视图模型一个。将 BaseViewModel 用于 IPC,将 ProfileViewModel 和 editProfileViewModel 用于委托,其中活动将自己点亮并将所有内容委托给它们的视图模型。这可以通过 LiveData 观察者和 DataBinding 的组合来实现。


推荐阅读