在我的应用程序中,我有一个需要访问 ViewModel 的 MainActivity。我正在使用 DaggerHilt 和 @ViewModelInject 注释注入 ViewModel。此外,我在 Activity 中有两个 Fragment,它们需要访问同一个 ViewModel 才能使用 observables 相互传递数据。
问题:我发现每当我的一个片段通过onDestroy()
它的 ViewModel 时,它就会被杀死。这让我认为 Activity 和 Fragments 没有共享同一个 ViewModel。
我的问题:有谁知道我们是否应该在 Dagger Hilt 中为 ViewModels 使用范围注释?我没有在 Hilt 文档或 android 开发教程/指南中看到这一点。我曾假设他们正在制作 ViewModels 应用级单例,这是有道理的。
如果我们必须为 ViewModels 使用范围注释,有谁知道哪个级别是合适的?
这是我的视图模型代码:
class MainActivityViewModel @ViewModelInject constructor(
private val repo: Repo,
private val rxSharedPrefsRepo: RxSharedPrefsRepo,
private val resourcesRepo: ResourcesRepo,
@Assisted private val savedStateHandle: SavedStateHandle
) : ViewModel() {