我正在考虑如何在我的Android应用中理想地实施缓存层。
目前我有通用的活动,显示来自远程服务器的数据。数据由DTO TemplateInstance 表示。每个 TemplateInstance 都有一个带有组件的Map,每个组件都可以有子组件。组件本身可以是Text(String),Image(ByteArray)或Time(或者通过子类化Component组成的任何东西)。
目前我的应用每次启动一个Activity时都会从服务器加载一个TemplateInstance。
我现在想在应用中实现缓存层,以便
我的策略如下:
我已经使用 db4o 成功实现了这一点。这个解决方案只有两个问题:
现在我正在寻找db4o的最佳替代品。我的想法到现在为止:
您认为最佳解决方案是什么?
我对此的研究将我带到了 EHCache 和 JCS ,这是我从未使用过的。您认为它们是否合适,也适用于Android手机上的资源?或者您有其他建议吗?
答案 0 :(得分:4)
如果我理解你的情况,我认为你应该实施自己的缓存解决方案。
我会使用HashMap<id, TemplateInstance>
。 HashMap是可序列化的,您可以分别使用ObjectOutputStream
和ObjectInputStream
来存储/加载它。
答案 1 :(得分:2)
db4o不仅限于GPL,通过其dOCL您可以选择其他开源许可证,如果您根本不能使用开源,那么它也完全是free for Android apps
答案 2 :(得分:0)
你可以使用我的分叉 simple-disk-cache这是一个易于使用的磁盘缓存,它使用了DiskLruCache。
我已经用google guava取代了Apache Commons IO依赖。并添加新的公共方法:
put(String key, String value, Object[] array)
- 我用来为最大TTL设置时间戳的值(在此时间以ms为单位,缓存已过期)
并且:T getArray(String key, Class type)
您可以从Serializable对象中放入数组,如下所示:
cache.put("key", String.valueOf(new Date().getTime() + 60000), Groups[] arrayGroups);
并获取它:Groups[] cacheArray = getCacheArray("key", Groups[].class);
你也可以放入缓存位图图片。