我正在考虑如何在我的Android应用中理想地实现缓存层

目前,我有通用 Activity ,可显示来自远程服务器的数据。数据由DTO TemplateInstance表示。每个TemplateInstance都有一个包含组件的Map,每个组件可以具有子组件。组件本身可以是Text(字符串),Image(字节数组)或Time(或通过对Component进行子分类的任何对象)。

当前,每次启动Activity时,我的应用程序都会从​​服务器加载TemplateInstance。

我现在想在应用程序中实现缓存层,以便

  • 将显示数据的时间减至最少
  • 在服务器上更改数据后将刷新数据。

  • 我的策略如下:
  • 启动的Activity通过ID(如果存在)从本地存储加载TemplateInstance。
  • UpdateService在后台检查模板实例是否已在服务器上更改(使用数据库中的版本字段)
  • 如果服务器版本大于本地版本,或者没有本地TemplateInstance,则从服务器检索数据,更新本地存储并更新 View

  • 我已经使用 db4o 成功地实现了这一点。此解决方案仅存在两个问题:
  • db4o在GPL下(我无法使用)
  • 当我加载具有很多图像(查询4秒)的TemplateInstances时,
  • db4o真的很慢

    现在,我正在寻找db4o的最佳替代品。到目前为止,我的想法是:
  • 由于数据
  • 的结构,SQLite不适合
  • 我不需要数据库功能-通过ID检索对象就足够了
  • 将对象保存在内存中会大大加快
  • 当应用程序退出时,应将内存状态保存到磁盘,以便可以在启动时重新实例化对象

  • 您认为什么是最好的解决方案?

    我对此的研究将我带到了我从未使用过的 EHCache JCS 。就Android手机上的资源而言,您认为它们是否合适?或者您还有其他建议吗?

    最佳答案

    如果我正确了解您的情况,我认为您应该实现自己的缓存解决方案。

    我会使用HashMap<id, TemplateInstance>。 HashMap是可序列化的,您可以分别使用ObjectOutputStreamObjectInputStream存储/加载它。

    09-26 18:37