Android应用程式的缓存策略

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

目前我有一个通用活动显示来自远程服务器的数据.数据由DTO TemplateInstance表示.每个TemplateInstance都有一个包含组件的映射,每个组件都可以有子组件.组件本身可以是Text(String),Image(ByteArray)或Time(或通过子类分组).

目前,我的应用程序每次启动活动时从服务器加载一个TemplateInstance.

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

>显示数据的时间减少到最小,
>数据在服务器上更改时刷新.

我的策略如下:

>已启动的Activity将通过ID从本地存储装载TemplateInstance(如果存在)
>如果服务器上的TemplateInstance已更改(使用数据库中的版本字段),UpdateService将在后台进行检查
>如果服务器版本大于本地服务器版本,或者没有本地TemplateInstance,则从服务器检索数据,更新本地存储并更新视图

我已经使用db4o实现了这一点.这个解决方案只有两个问题:

> db4o是在GPL下(我不能使用它)
> db4o真的很慢,当我加载TemplateInstances有许多图像(查询4秒)

现在我正在寻找db4o的最佳替代品.我的想法到现在为止:

> sqlite不适合因为数据的结构
>我不需要数据库功能 – 通过ID检索对象就足够了
拿着内存中的物体会快得多
>应用程序退出时,内存状态应该保存到磁盘,所以启动时可以重新启动对象

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

我对此的研究带给了我从未使用过的EHCache和JCS.你认为它们是否适合,还有关于Android手机上的资源?还是有其他建议?

解决方法

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

我将使用HashMap< id,TemplateInstance&gt ;. HashMap是可序列化的,您可以分别使用ObjectOutputStream和ObjectInputStream存储/加载它.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...