Android对象缓存

时间:2012-05-31 21:21:26

标签: java android caching

寻找Android(SDK 7+)类的简单开源非copyleft缓存。

目的是主要存储异步提取的Bitmap(因此我不需要将此功能包含在缓存类中)。

我为此目的使用了weakList,这自然是一个糟糕的解决方案,Guava缓存虽然好一点,但仍然没有问题。

首选缓存能够存储任何可序列化的Object,而不仅仅是Bitmap,并且我可以轻松地清除对象添加到缓存时使用的某些标记的对象。 / p>

最好的选择是获取文件系统缓存,就像包装sqlite数据库一样。 如果缓存将被Settings >Manage Application > Clear Cache

清除,那将会很棒

7 个答案:

答案 0 :(得分:8)

上面提到的普通LruCache是​​一个内存缓存。从您的问题来看,这听起来像是在寻找磁盘缓存解决方案。

阅读缓存位图android培训文档的Disk Cache

然后看看以下线程中讨论的DiskLruCache实现: Using DiskLruCache in android 4.0 does not provide for openCache method

您可以在GitHub上获取DiskLruCache来源。

答案 1 :(得分:4)

android.util.LruCache怎么样?如果您需要支持旧平台,只需将其复制到您的项目中即可。编辑:它实际上在compat / support库中。

答案 2 :(得分:3)

ICSDiskLruCache.java。这是在ICS和更高版本的Android中可用的DiskLruCache的端口,由Google作为IO 2012 Android应用程序的一部分开源,因此它适用于低至(至少)API级别7的版本。

http://code.google.com/p/iosched/source/browse/android/src/com/google/android/apps/iosched/util/ICSDiskLruCache.java

找到来源

答案 3 :(得分:2)

答案 4 :(得分:2)

点火是你在寻找什么:https://github.com/kaeppler/ignition。它允许您缓存图像,序列化对象。 对于兑现部分,请使用ignition-support

以下是点火支持的API:http://kaeppler.github.com/ignition-docs/ignition-support/apidocs/

答案 5 :(得分:1)

我建议您使用广泛使用且之前称为droid-fu的重构且非常强大的lib称为点火。 点火库主要由Qype的主要移动开发人员MatthiasKäppler维护。该库有一个缓存框架和RemoteImage Widget(以及许多更有用的类)。而且Maven准备好了,所以很容易添加依赖。看一下缓存javadoc: http://kaeppler.github.com/ignition-docs/ignition-support/apidocs/

答案 6 :(得分:1)

您可以在这个官方的Android文档之后创建自己的图像缓存,它不仅为您提供代码,还解释了它的工作原理:

http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html

他们还解释了整个过程,从加载位图,在后台线程中处理它们,缓存它们并显示它们

http://developer.android.com/training/displaying-bitmaps/index.html