android

时间:2016-04-19 17:23:10

标签: android sqlite offline-caching

我需要编写一个能够脱机工作的应用程序,但也可以在网络存在的情况下最大限度地减少重复网络请求的数量。 怎么办我想。我将使用改造,装载机,sqlite。 缓存失效将是准时的(表中的DateTime列) 服务器API - > JSON - >对象 - >源码

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

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

如果可能,请提供实施细节,课程名称,图书馆,github链接等... 谢谢

对不起英语)

1 个答案:

答案 0 :(得分:0)

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

选项2: 您可以定义缓存失效规则。您可以在最后一次写入操作时保存在首选项中,如果它超过8小时或您决定的任何金额,则删除整个数据库,表格或只是一行。只需在接收到DB时保存每个请求响应。

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();