给定以下情况:ProfileActivity 和 EditProfileActivity都从 BaseActivity 扩展而来,每个活动是否应该有自己的视图模型(ProfileViewModel 和 EditProfileViewModel(,在两个活动中使用相同的视图模型,还是从父级继承模型,但在每个活动中将其正面?
谢谢
这取决于 ViewModel 的范围。如果您希望您的活动相互通信,那么您可以创建一个范围限定为 BaseActivity 的 BaseViewModel,并使用它来在 ProfileActivity 和 EditProfileActivity 之间执行 IPC,因为它们会消耗 BaseActivity。
您还可以创建三个视图模型,每个视图模型一个。使用 BaseViewModel for IPC 和 ProfileViewModel 和 editProfileViewModel 进行委派,其中活动本身将是轻量级的,并将所有内容委托给他们的视图模型。这可以通过 LiveData 观察器和 DataBinding 的组合来实现。