【发布时间】:2020-06-24 16:42:15
【问题描述】:
在最近从 Dagger 迁移到 Hilt 之后,我开始观察到关于 ViewModel 的非常奇怪的行为。下面是代码sn-p:
@HiltAndroidApp
class AndroidApplication : Application() {}
@Singleton
class HomeViewModel @ViewModelInject constructor() :
ViewModel() {}
@AndroidEntryPoint
class HomeFragment : Fragment(R.layout.fragment_home) {
private val homeViewModel by viewModels<HomeViewModel>()
override fun onResume() {
super.onResume()
Timber.i("hashCode: ${homeViewModel.hashCode()}")
}
}
@AndroidEntryPoint
class SomeOtherFragment : Fragment(R.layout.fragment_home) {
private val homeViewModel by viewModels<HomeViewModel>()
override fun onResume() {
super.onResume()
Timber.i("hashCode: ${homeViewModel.hashCode()}")
}
}
hashCode 的值在所有片段中并不一致。我无法弄清楚我还缺少什么以在活动中生成视图模型的单例实例。
我正在使用单活动设计并添加了所有必需的依赖项。
【问题讨论】:
-
不要使用 @Singleton 注释您的 ViewModel。
-
为什么要使用 @Singleton 注释视图模型?
-
是的,我已经删除了。
标签: android dagger dagger-hilt