Java Android对象缓存

Java Android对象缓存,java,android,caching,Java,Android,Caching,正在为Android(SDK 7+)类寻找一个简单的开源非copyleft缓存 其主要目的是存储异步获取的位图s(因此我不需要在缓存类中包含此功能) 我为此使用了一个弱列表,这自然是一个糟糕的解决方案,番石榴缓存稍微好一点,但仍然不好 缓存最好能够存储任何可序列化的对象,而不仅仅是位图,并且我可以轻松地清除对象添加到缓存时使用的特定标记的对象 最好的选择是像包装sqlite数据库一样获取文件系统缓存。 如果通过Settings>manageapplication>clearcache清除缓存,那

正在为Android(SDK 7+)类寻找一个简单的开源非copyleft缓存

其主要目的是存储异步获取的
位图
s(因此我不需要在缓存类中包含此功能)

我为此使用了一个弱列表,这自然是一个糟糕的解决方案,番石榴缓存稍微好一点,但仍然不好

缓存最好能够存储任何可序列化的
对象
,而不仅仅是
位图
,并且我可以轻松地清除对象添加到缓存时使用的特定标记的对象

最好的选择是像包装sqlite数据库一样获取文件系统缓存。
如果通过
Settings>manageapplication>clearcache

清除缓存,那就太好了。我建议您使用广泛使用的droid fu,这是一种经过重构且功能强大的库,名为ignition。 点火库主要由Qype的Matthias Käppler移动开发负责维护。该库有一个缓存框架和RemoteImage小部件(以及许多更有用的类)。此外,它是Maven就绪的,因此很容易添加依赖项。看看缓存javadoc:
android.util.LruCache怎么样?如果您需要支持较旧的平台,只需将其复制到您的项目中即可。编辑:它实际上在compat/support库中

上面建议的普通LruCache是内存缓存。从您的问题来看,您似乎在寻找磁盘缓存解决方案

阅读缓存位图android培训文档的第页

然后查看以下线程中讨论的DiskLruCache实现:


您可以在GitHub上获取源代码

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


找到源点火开关是您要查找的:。它允许您缓存图像、序列化对象。 对于兑现部分,请与


以下是点火支持的API:

您可以根据android官方文档创建自己的图像缓存,该文档不仅提供了代码,还解释了其工作原理:

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


我不知道;我不认为Android有任何缓存系统。Guava缓存似乎更灵活,我现在更喜欢使用文件系统缓存,而不是运行时缓存,谢谢你的提示。一篇关于android的文章讨论了图像缓存的选项。我支持这篇文章。Jake Wharton是一名优秀的开发人员。该文件可在以下网址找到: