在Using Dagger in your Android app代码实验室教程中,他们使用活动范围的常规类,该类像ViewModel一样
@ActivityScope
class RegistrationViewModel @Inject constructor(val userManager: UserManager) {
...
}
这使Dagger的ViewModel注入非常简单,但是如果我们不从体系结构组件ViewModel
类派生的话,我们不会松懈吗?
答案 0 :(得分:0)
通常,代码实验室与某个主题相关,并且它们仅尝试解释该主题。这里是Dagger,不是Architecture Components。是的,您可能会失去一些功能,但是如果他们仍然可以发表自己的观点-没关系。
如果它们仅使应用程序仅使用简单的Java对象,这意味着它们不需要ViewModel的额外功能,那么它们编写的代码更少,甚至更好。
我还想指出,“您正在丢失ViewModel.onCleared”的解释是“最小的问题”。 VM的“主要功能”是,您可以在同一活动/片段的生命周期中共享同一实例,或者可以在不同的活动/片段之间共享它。
onCleared是应该谨慎使用的东西,因为这意味着在某些情况下,您试图清除对您不应该持有的东西的引用。