【发布时间】:2020-01-31 00:30:33
【问题描述】:
为什么我应该为视图模型使用 viewmodelproviders?
为什么我不能将自定义单例注释添加到我的视图模型,然后将此视图模型注入片段类?
像这样:
@MainScope
class MainViewModel @Inject constructor(): ViewModel()
然后:
open class BaseFragment<T: ViewModel>: DaggerFragment() {
@Inject
protected lateinit var viewModel: T
这两种情况都与屏幕旋转无关。
单例注释案例有什么缺点吗? 我只看到了优点,使用这种方法我不需要复制/粘贴大量代码。
【问题讨论】:
-
我使用带有 Dagger 和 ViewModelProviders 的 ViewModelFactory,它运行良好。请参阅此处了解更多信息:proandroiddev.com/…
-
我也用过,效果很好。但我不明白为什么要使用它。它至少需要 3 个复制/粘贴类。
-
Dagger 作用域和注入也很有效。据我所知 - ViewModelProviders 是帮助器类,其主要目的是创建 viewmodel 的新实例,如果它不存在,否则返回现有实例。
-
带有作用域的 Dagger 可以做同样的事情,但不需要额外的类。