android 中的缓存策略

Cache strategy in android

我需要编写一个能够离线工作的应用程序,而且在存在网络的情况下尽量减少重复网络请求的数量。 我想怎么办。我将使用改造、装载机、sqlite。 缓存失效将准时(table 中的日期时间列) 服务器 API -> JSON -> 对象 -> Sqlite

1) 在网络sqlite数据库中工作时会填充获取数据的时间标记
2)当再次提示如果时间上的数据没有过时(比如小于8小时)可用DB中的数据被使用。
3)如果数据过期会在sqlite中进行重复请求和更新数据
4)如果网络没有且不是最新的,应用程序将使用旧数据

如果有技术上更正确的选项?

如果可能,请提供实施细节、类、库、link 到 github 等的名称... 谢谢

P.S 对不起英文)

选项 1: 您可以使用同步适配器来使您的数据保持最新。 http://developer.android.com/training/sync-adapters/creating-sync-adapter.html

选项 2: 您可以定义缓存失效规则。您可以在首选项中保存最后一次写入操作的时间,如果超过 8 小时或您决定的任何数量,删除整个数据库,table 或仅删除一行。并在收到时将每个请求响应保存到数据库。

PS 你也可以使用 okhttp 和改造来为你在 LRU 缓存中缓存你的响应。

okHttpClient = new OkHttpClient.Builder()
            .cache(new Cache(new File(Constants.CACHE_DIR, "http"), 10485760))
            .build();
    restApi = new Retrofit.Builder()
            .baseUrl(RestApi.API_BASE_URL)
            .client(okHttpClient).build();