Вы можете инициировать модификацию, как показано ниже для кэшированного запроса и не кэшированного запроса
Для кеширования
public static Retrofit initializeRetrofit(Context mContext) {
OkHttpClient client = new OkHttpClient();
final File baseDir = mContext.getCacheDir();
if (baseDir != null) {
final File cacheDir = new File(baseDir, "HttpResponseCache");
client.setCache(new Cache(cacheDir, 10 * 1024 * 1024));
}
//Setting time out for okHTTP
client.setConnectTimeout(60, TimeUnit.SECONDS); // connect timeout
client.setReadTimeout(60, TimeUnit.SECONDS);
client.setRetryOnConnectionFailure(true);
/**
* For Logging in retrofit
*/
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
client.interceptors().add(interceptor);
return new Retrofit.Builder()
.baseUrl(Constants.baseUrl)
.addConverterFactory(GsonConverterFactory.create())
.client(client)
.build();
}
Для не кеширования
public static Retrofit initializeRetrofitWithoutCache(Context mContext) {
OkHttpClient client = new OkHttpClient();
//Setting time out for okHTTP
client.setConnectTimeout(60, TimeUnit.SECONDS); // connect timeout
client.setReadTimeout(60, TimeUnit.SECONDS);
client.setRetryOnConnectionFailure(true);
/**
* For Logging in retrofit
*/
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
client.interceptors().add(interceptor);
return new Retrofit.Builder()
.baseUrl(Constants.baseUrl)
.addConverterFactory(GsonConverterFactory.create())
.client(client)
.build();
}
Используйте эти функции для инициализацииRetrofit перед выполнением сетевого вызова, используйте эти функции, как требуется в вашей функции вызова API
Вы можете сделать что-то подобное, чтобы вызвать ваше обновление
Для звонков с кешем
Call<ResponseBody> call = initializeRetrofit()
.create(RetrofitInterface.class)
.yourFunction(params...);
для звонков без кеша
Call<ResponseBody> call = initializeRetrofitWithoutCache()
.create(RetrofitInterface.class)
.yourFunction(params...);
Вы также можете создать обертку над ней, где вы можете определить свои маршруты и флаг, чтобы проверить, требуется ли кэширование или нет