我一直在使用匕首2.11 AndroidInjection没有问题,直到我试图在OkHttp身份验证器中注入我的Retrofit服务才能处理会话超时。
AndroidInjection仅允许在Activities,Fragments,Services,ContentProviders和BroadcastReceicers中进行注入。
我的问题是如何在不在上面列表中的类中使用新的Dagger AndroidInjection?
答案 0 :(得分:0)
只需使用inject来提供Retrofit,在你提供的同一模块中也提供改装使用的okhttp
@Singleton
@Provides
OkHttpClient providesOkHttpClient(){
return new OkHttpClient.Builder()
.connectTimeout(RETROFIT_API_CONNECTION_TIMEOUT_SECONDS, TimeUnit.SECONDS)
.readTimeout(RETROFIT_API_CONNECTION_TIMEOUT_SECONDS, TimeUnit.SECONDS)
.writeTimeout(RETROFIT_API_CONNECTION_TIMEOUT_SECONDS, TimeUnit.SECONDS)
.build();
}
@Singleton
@Provides
Retrofit providesRetrofit(OkHttpClient client){
return new Retrofit.Builder()
.baseUrl(baseUrl)
.client(client)
.build();
}
然后在你的课堂上:
public class MyClass {
Retrofit mRetrofit;
@Inject
public MyClass(Retrofit retrofit){
mRetrofit = retrofit;
}
}