我在Application
中定义了一个变量,我需要将它注入WorkViewModal
。
@HiltAndroidApp
class SageApplication : Application() {
val applicationScope = CoroutineScope(SupervisorJob())
}
但是我不能这样做,因为ApplicationContext
没有我的自定义属性applicationScope
。
@HiltViewModel
class WorkViewModel @Inject constructor(
@ApplicationContext private val applicationContext: ApplicationContext
) : ViewModel() {
我也不能使用@Provides
来提供SageApplication
的示例,它还需要提供SageApplication
,但我不确定这样做是否正确。
@InstallIn(SingletonComponent::class)
@Module
class ApplicationModule {
@Provides
fun provideApplicationScope(@ApplicationContext application: SageApplication) = application.applicationScope
}
我想像这样将applicationScope
注入到ViewModel
中:
@HiltViewModel
class WorkViewModel @Inject constructor(
private val applicationScope: CoroutineScope
) : ViewModel()
我该怎么办?
1条答案
按热度按时间ni65a41a1#
您可以定义一个自定义Hilt模块,该模块提供您的SageApplication示例并将applicationScope公开为单例依赖项。下面是一个示例:
确保将ApplicationModule添加到SageApplication类中的@HiltAndroidApp注解中:
通过这种设置,Hilt将向WorkViewModel提供包含applicationScope的SageApplication示例。