使用 Hilt 将 OkHttpClient 注入 AppGlideModule 时出错

问题描述 投票:0回答:1

我正在尝试使用 Hilt 将 OkHttpClient 注入到 AppGlideModule 中。

我的网络模块提供了http客户端:

   @Singleton
   @Provides
   fun provideOkHttpClient(
      tokenInterceptor: Interceptor
   ): OkHttpClient {
      return OkHttpClient.Builder()
         .connectTimeout(60, TimeUnit.SECONDS)
         .readTimeout(60, TimeUnit.SECONDS)
         .writeTimeout(60, TimeUnit.SECONDS)
         .addInterceptor(tokenInterceptor)
         .build()
   }

尝试注入AppGlideModule:

@GlideModul
@Excludes(OkHttpLibraryGlideModule::class)
class MyGlideModule: AppGlideModule() {

    @Inject lateinit var httpClient: OkHttpClient

    override fun registerComponents(context: Context, glide: Glide, registry: Registry) {
        registry.replace(GlideUrl::class.java, InputStream::class.java, OkHttpUrlLoader.Factory(httpClient))

    }
}

但是,当 glide 初始化时,http 客户端不会被注入,因为我收到以下错误:

由以下原因引起:kotlin.UninitializedPropertyAccessException:lateinit 属性 httpClient 尚未初始化

我也尝试过使用构造函数注入,但没有成功

android dagger-2 android-glide dagger-hilt
1个回答
0
投票

您是否提供了您在网络模块中使用的

Interceptor
对象?如果没有,那么 hilt 将无法提供您需要的 OkHttpClient 实例。

我相信在为

provideTokenInterceptor

创建新功能后它应该可以正常工作
© www.soinside.com 2019 - 2024. All rights reserved.