带有TTL的OkHttp

时间:2018-10-04 09:24:00

标签: android caching okhttp

我使用OkHttp在应用启动时从后端获取一些数据。该请求仅执行一次。响应字符串被解析为数据类,存储在内存中,并在应用生存期内使用。现在后端要求我用TTL缓存一些数据。

if some_key in cache: return cache.get(some_key)
else:
    get value, ttl from BE.
    populate cache with ttl
    return value

最快的实现方式是什么?

1 个答案:

答案 0 :(得分:0)

在创建TextBlock实例时,只需将OkHttpClient方法应用于生成器,如下所示:

.cache

编辑:

要在正文过期后重复请求,您必须先从请求中获取最大年龄值:

val okHttpClient = OkHttpClient.Builder()
    .cache(Cache(context.getCacheDir(), cacheSize)
    .build()

然后使用JobScheduler或AlarmManager之类的东西计划下一个请求,或者如果您确定当前线程在下一个请求之前不会被杀死,则可以发布一个延迟的可运行对象:

val cacheControl = CacheControl.parse(data.headers())
val maxAge = cacheControl.maxAgeSeconds()