我正在考虑两种方法
- 将 JSON 响应缓存为 JSON 文件
- 使用 Reservoir 缓存 Java POJO(JSON 响应已经使用 Retrofit 反序列化)。
数据说明:
我要在此处缓存的数据是来自电子商务网站的 20 种产品的列表。它们不是复杂的对象,并且没有嵌套,因为这里使用了 jsonapi.org 规范。
通过 Retrofit,我已经可以获得 20 个 Product POJO,其中 Product 是具有少于 10 个属性的 Java 模型类。
哪种方法更好,为什么?
我不考虑 SQLite 数据库,因为我认为它更昂贵并且只适用于
- 需要数据完整性
- 有写操作,例如购物车
- 数据量大,关系复杂
最佳答案
这实际上取决于两个主要因素: 1.用例 2. 对特定系统的舒适程度。
你可以使用任何你认为适合你的。如果你真的需要像数据库这样的数据结构和一些复杂的查询机制,SQLite 是可以的。如果对您有帮助,您可以使用一些 ORM 系统(如 GreenDAO 或 ORMLite)包装 SQLite。还有 Realm,更多面向对象的方法(有问题)。
您还可以选择 SharedPreferences(我个人不喜欢这种方法)或仅使用 parcelable 或 Java 序列化将 POJO 序列化为文件。这实际上取决于您想要实现的目标,因为任何方法都有利有弊。
对于面向 SQL 的数据库,SQL 的用户群很大,这很好,但您需要映射不太好。
Realm,可能是移动设备数据库中的下一件大事(好),但它还不成熟,在检索时你必须使用具体的类(坏),我可能想要一个抽象/接口(interface)/基类。
Parcelable - 您必须编写大量代码(差)但速度非常快(好)
Java 序列化 - 易于重构任何可序列化类,无需序列化代码,良好适用于中小型数据量。 不太好因为它使用了反射,所以对于非常大量的数据。
关于离线时 Android 缓存只读 REST API 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38524104/