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