При создании экземпляра OkHttpClient
просто примените метод .cache
к сборщику следующим образом:
val okHttpClient = OkHttpClient.Builder()
.cache(Cache(context.getCacheDir(), cacheSize)
.build()
Редактировать:
Чтобы повторить запрос после истечения срока действия тела, вы должны сначалаполучите максимальное значение возраста из запроса:
val cacheControl = CacheControl.parse(data.headers())
val maxAge = cacheControl.maxAgeSeconds()
И затем запланируйте следующий запрос с помощью чего-то вроде JobScheduler или AlarmManager, или если вы уверены, что текущий поток не будет уничтожен до следующего запроса, вы можетепросто опубликовать отложенный runnable:
Handler().postDelayed({
// make request
}, cacheControl.maxAgeSeconds().toLong().times(1000))