寻找Android(SDK 7+)类的简单开源非copyleft缓存。
目的是主要存储异步提取的Bitmap
(因此我不需要将此功能包含在缓存类中)。
我为此目的使用了weakList,这自然是一个糟糕的解决方案,Guava缓存虽然好一点,但仍然没有问题。
首选缓存能够存储任何可序列化的Object
,而不仅仅是Bitmap
,并且我可以轻松地清除对象添加到缓存时使用的某些标记的对象。 / p>
最好的选择是获取文件系统缓存,就像包装sqlite数据库一样。
如果缓存将被Settings >Manage Application > Clear Cache
答案 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的版本。
找到来源答案 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