10

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

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

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

最好缓存能够存储任何可序列化Object的 ,而不仅仅是 a Bitmap,并且我可以在将对象添加到缓存时轻松清除使用的某些标记的对象。

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

4

7 回答 7

9

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

阅读 Caching Bitmaps android 培训文档的磁盘缓存

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

您可以在 GitHub 上获取DiskLruCache源代码。

于 2012-07-19T17:01:55.477 回答
4

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

于 2012-07-18T02:09:36.043 回答
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找到源代码

于 2012-07-22T08:25:58.463 回答
2

点火是你要找的东西:https ://github.com/kaeppler/ignition 。它允许您缓存图像、序列化对象。对于收银部分,使用点火支持

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

于 2012-07-23T08:05:09.563 回答
1

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

于 2012-07-17T15:45:23.353 回答
1

您可以按照这个官方 android 文档创建自己的图像缓存,该文档不仅为您提供代码,还解释了它是如何工作的:

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

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

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

于 2012-07-23T15:40:10.690 回答