Есть ли способ обнаружить, что ответ Retrofit приходит из сконфигурированного кэша OkHttp или является живым ответом?Обнаруживать, если ответ OkHttp приходит из кеша (с помощью дооснащения)
определениеКлиент:
Cache cache = new Cache(getCacheDirectory(context), 1024 * 1024 * 10);
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.cache(cache)
.build();
определение Апи:
@GET("/object")
Observable<Result<SomeObject>> getSomeObject();
Пример вызова:
RetroApi retroApi = new Retrofit.Builder()
.client(okHttpClient)
.baseUrl(baseUrl)
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.build()
.create(RetroApi.class);
result = retroApi.getSomeObject().subscribe((Result<SomeObject> someObjectResult) -> {
isFromCache(someObjectResult); // ???
});
Эта цитата исходит из разговора или какого-либо другого онлайн-ресурса? Если да, не могли бы вы предоставить ссылку? – user2340612
На самом деле лучше проверить 'result.response(). Raw(). CacheResponse()! = Null'. Если клиент повторно проверяет кешированный ответ и получает 304, оба параметра «networkResponse()» и «cacheResponse()» будут не равными нулю. – apottere
Да, в зависимости от семантики и вашего поведения в приложении. –