gpt4 book ai didi

android - 如何使用 Hilt 在存储库中注入(inject)应用程序上下文?

转载 作者:行者123 更新时间:2023-12-03 13:24:31 24 4
gpt4 key购买 nike

我想将应用程序上下文注入(inject)到存储库类中,以在存储库中创建房间数据库实例。我正在使用 Hilt 进行依赖注入(inject)。
我们可以使用 hilt 来传递应用程序上下文还是我必须手动传递它?
我收到以下错误:

[Dagger/MissingBinding] android.content.Context cannot be provided without an
@Provides-annotated method. public abstract static class ApplicationC
implements ExartApplication_GeneratedInjector
Context Error

最佳答案

只需使用 @ApplicationContext您的上下文参数上的注释。

By annotating context with @ApplicationContext provided byHilt, we don't need to create a provider for the application context.

import dagger.hilt.android.qualifiers.ApplicationContext

/* For hilt versions lower than v2.28.2 use ApplicationComponent instead of
SingletonComponent. ApplicationComponent is deprecated and even removed in
some versions above v2.28.2 so better refactor it to SingletonComponent. */


@Module
@InstallIn(SingletonComponent::class)
class ProductionModule {

@Singleton
@Provides
fun provideAppDatabase(@ApplicationContext appContext: Context): AppDatabase {
return Room
.databaseBuilder(appContext, AppDatabase::class.java, AppDatabase.DB_NAME)
.build()
}
}
注意:如果您想将 Activity 上下文作为依赖项传递,请尝试使用应用程序上下文或重新考虑您的用例。传递 Activity 上下文可能会导致严重的影响,例如内存泄漏。话虽如此,如果您知道自己在做什么,请使用 @ActivityContext用于传递 Activity 上下文的注释。一个可能的用例可能是适配器。

关于android - 如何使用 Hilt 在存储库中注入(inject)应用程序上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63072927/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com