从本文中,我知道每个Hilt组件都带有一组默认绑定,Hilt可以将这些绑定作为依赖项注入。你可以看到图A。
并且ViewModelComponent
只有一个基于上述文章的默认绑定SavedStateHandle
。
为什么我可以在代码A中使用Application
作为ViewModelComponent
和Hilt的默认绑定?
@HiltViewModel
class PlaySoundViewModel @Inject constructor(
private val appContext: Application, // It's Ok, I have tested.
private val playSound: IPlaySound,
private val savedStateHandle: SavedStateHandle
): ViewModel(){
...
}
图片A
1条答案
按热度按时间tjrkku2a1#
根据此图(https://developer.android.com/training/dependency-injection/hilt-android#component-hierarchy),我们可以访问父组件的绑定,正如您提到的,
SingletonComponent
将Application
作为默认绑定,ViewModel
能够访问Application