我想将应用程序上下文注入到存储库类中,以在存储库内创建一个会议室数据库实例。我正在使用Hilt进行依赖项注入。
我们可以使用hilt传递应用程序上下文,还是必须手动传递它?
我遇到以下错误:
[Dagger/MissingBinding] android.content.Context cannot be provided without an
@Provides-annotated method. public abstract static class ApplicationC
implements ExartApplication_GeneratedInjector
答案 0 :(得分:22)
只需在上下文参数上使用@ApplicationContext
注释。
通过用
@ApplicationContext
注释上下文 不用了,我们不需要为应用程序上下文创建提供程序。
import dagger.hilt.android.qualifiers.ApplicationContext
@Module
@InstallIn(ApplicationComponent::class)
class ProductionModule {
@Singleton
@Provides
fun provideAppDatabase(@ApplicationContext appContext: Context): AppDatabase {
return Room
.databaseBuilder(appContext, AppDatabase::class.java, AppDatabase.DB_NAME)
.build()
}
}
注意:如果您很想通过活动上下文作为依赖项,请尝试使用应用程序上下文或重新考虑您的用例。通过活动上下文可能会导致严重的隐患,例如内存泄漏。