我正在尝试使用 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 尚未初始化
我也尝试过使用构造函数注入,但没有成功
您是否提供了您在网络模块中使用的
Interceptor
对象?如果没有,那么 hilt 将无法提供您需要的 OkHttpClient 实例。
我相信在为
provideTokenInterceptor
创建新功能后它应该可以正常工作