最近从 Dagger 迁移到 Hilt 后,我开始观察到关于 ViewModel 的非常奇怪的行为。下面是代码片段:
@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 的值在所有片段中并不一致。我无法弄清楚我还缺少什么以在活动中生成视图模型的单例实例。
我正在使用单一活动设计并添加了所有必需的依赖项。