我需要编写一个能够脱机工作的应用程序,但也可以在网络存在的情况下最大限度地减少重复网络请求的数量。 怎么办我想。我将使用改造,装载机,sqlite。 缓存失效将是准时的(表中的DateTime列) 服务器API - > JSON - >对象 - >源码
1)在网络中工作时,sqlite数据库将填充数据获取时的标记
2)当再次提示时,如果有关时间的数据未过期(例如,少于8小时),则可使用DB中的可用数据。
3)如果数据过期,将在sqlite中执行重复请求和更新数据
4)如果网络没有并且不是最新的,则应用程序将使用旧数据
如果技术上更正确的选项?
如果可能,请提供实施细节,课程名称,图书馆,github链接等... 谢谢
对不起英语)
答案 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();