充当ViewModel的活动范围常规类

问题描述 投票:0回答:1

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

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

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

android viewmodel dagger-2
1个回答
0
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.