Dagger 2.11在OkHttp Authenticator中注入

时间:2017-10-17 07:08:55

标签: android dagger-2 dagger

我一直在使用匕首2.11 AndroidInjection没有问题,直到我试图在OkHttp身份验证器中注入我的Retrofit服务才能处理会话超时。

AndroidInjection仅允许在Activities,Fragments,Services,ContentProviders和BroadcastReceicers中进行注入。

我的问题是如何在不在上面列表中的类中使用新的Dagger AndroidInjection?

1 个答案:

答案 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;
   }
}