缓存 JSON:HTTP 缓存与数据库

Ego*_*gor 5 sqlite android json caching http

我正在开发一个从后端使用 JSON 提要的应用程序。默认情况下,每次用户在连接到 Internet 的情况下访问应用程序时,都会触发 HTTP 请求,如果没有网络,则应从缓存加载数据。我正在使用Retrofit进行网络连接,我看到了两种实现缓存的方法:使用配置为支持缓存的OkHttp客户端,或者创建一个 SQLite 数据库来存储数据。第二个选项对我来说很熟悉,因此看起来更可靠,但是有很多与这种方法相关的开销。我从未真正使用过 HTTP 缓存,我想知道仅依靠它进行离线数据查看是否足够?

Vol*_*nis 5

您对 SQLite 是对的,更好的方法是将 HTTP 请求和对实际数据的访问分开。因为是feed,所以是结构化数据。您可以执行以下方法:

  1. Http Requests -> JSON -> Parser -> SQLite DB 插入
  2. 来自 SQLite DB -> List 或任何其他适配器的 CursorLoader(或自定义任何加载器)

这样,即使没有互联网,您也始终可以访问数据。您可以随时触发 HTTP 轮询并更新数据库。在更新/更改时,内容数据的观察者会触发加载器并更新 UI(如果当前显示给用户)。