活动范围的常规类,充当ViewModel

时间:2020-01-21 17:50:30

标签: android viewmodel dagger-2

Using Dagger in your Android app代码实验室教程中,他们使用活动范围的常规类,该类像ViewModel一样

@ActivityScope
class RegistrationViewModel @Inject constructor(val userManager: UserManager) {
    ...
}

这使Dagger的ViewModel注入非常简单,但是如果我们不从体系结构组件ViewModel类派生的话,我们不会松懈吗?

1 个答案:

答案 0 :(得分:0)

通常,代码实验室与某个主题相关,并且它们仅尝试解释该主题。这里是Dagger,不是Architecture Components。是的,您可能会失去一些功能,但是如果他们仍然可以发表自己的观点-没关系。

如果它们仅使应用程序仅使用简单的Java对象,这意味着它们不需要ViewModel的额外功能,那么它们编写的代码更少,甚至更好。

我还想指出,“您正在丢失ViewModel.onCleared”的解释是“最小的问题”。 VM的“主要功能”是,您可以在同一活动/片段的生命周期中共享同一实例,或者可以在不同的活动/片段之间共享它。

onCleared是应该谨慎使用的东西,因为这意味着在某些情况下,您试图清除对您不应该持有的东西的引用。