Tôi tự hỏi nếu có một cách để Dagger biết rằng nó sẽ tạo lại một đối tượng khi có dữ liệu mới.Dagger + Trang bị thêm. Thêm tiêu đề auth tại thời gian chạy
Ví dụ tôi đang nói đến là với tiêu đề yêu cầu tôi có để trang bị thêm. Tại một số thời điểm (khi người dùng đăng nhập), tôi nhận được một mã thông báo mà tôi cần phải thêm vào các tiêu đề của trang bị thêm để thực hiện các yêu cầu đã được xác thực. Vấn đề là, tôi còn lại với cùng một phiên bản unauthenticated trang bị thêm. Đây là mã tiêm của tôi:
@Provides
@Singleton
OkHttpClient provideOkHttpClient(Cache cache) {
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(interceptor)
.cache(cache).build();
client
.newBuilder()
.addInterceptor(
chain -> {
Request original = chain.request();
Request.Builder requestBuilder = original.newBuilder()
.addHeader("Accept", "Application/JSON");
Request request = requestBuilder.build();
return chain.proceed(request);
}).build();
return client;
}
@Provides
@Singleton
Retrofit provideRetrofit(Gson gson, OkHttpClient okHttpClient) {
Retrofit retrofit = new Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create(gson))
.addCallAdapterFactory(RxErrorHandlingCallAdapterFactory.create())
.baseUrl(mBaseUrl)
.client(okHttpClient)
.build();
return retrofit;
}
@Provides
@Singleton
public NetworkService providesNetworkService(Retrofit retrofit) {
return retrofit.create(NetworkService.class);
}
Bất kỳ ý tưởng nào về cách thực hiện công việc này?
Đối với tùy chọn 1. Làm cách nào để yêu cầu một phiên bản trang bị mới? – AIntel
Giả sử bạn có một 'FooComponent fooCompomnent', cung cấp cá thể' Retrofit'. Bây giờ bạn 'null' ra thành phần đó và tạo một' FooComponent' mới. – azizbekian
Đánh dấu câu trả lời của bạn là chính xác, vì tôi hiểu và xem giải pháp của bạn hoạt động như thế nào. Vấn đề với thiết lập của tôi là tôi xây dựng tiêm trang bị thêm cho người trình bày của tôi mà chính nó được tiêm trong quan điểm của tôi. Và tôi làm điều này trên quan điểm của tôi một số trong đó có các thành phần riêng của họ mà phụ thuộc vào thành phần mạng của tôi. Tôi đã hy vọng cho một số giải pháp ma thuật mà bằng cách nào đó sẽ buộc người thuyết trình của tôi được tái xuất hiện trên tất cả các quan điểm của tôi. – AIntel