【问题标题】:EhCache in Android for caching bitmap images?Android中的EhCache用于缓存位图图像?
【发布时间】:2011-02-14 17:33:41
【问题描述】:

我正在编写一个相当不错的 Android 应用程序,它需要缓存许多大小为 48x48 到 500x500 像素的不同图像。这些图像是通过网络从许多不同的来源获取的(想想:用户选择一个来源,浏览一堆图像,更改源,浏览一堆图像等)。我想为这些图像实现缓存,因为如果有人浏览他们已经看过的一些图像,我不想点击 HTTP。显然,内存使用非常关键,这就是 EhCache 的用武之地,因为它提供了许多不同的选项来限制缓存、将其扩展到磁盘等。

这是缓存这些图像的正确/最佳方法吗?我注意到很多应用程序缓存到 SD 卡上的磁盘,但为了速度/方便,我想尽可能避免这种情况。

【问题讨论】:

  • 在尝试任何内存缓存之前,您是否尝试过将图像缓存在磁盘上?请记住,您的手机上只有非常有限的资源,系统会在需要资源时终止您的应用程序,但磁盘始终可用。
  • 所以我应该写一个完整的缓存系统来缓存到磁盘?有没有图书馆可以简化这个?

标签: android caching ehcache


【解决方案1】:

你应该看看 Matthias Kaeppler 的 Droid-Fu 项目:
https://github.com/mttkay/droid-fu

在 Droid-Fu 中,有一个ImageCache,它使用内存作为一级缓存,使用磁盘作为二级缓存。它是专门为 Android 制作的,并且在那里做了正确的事情,即为当前应用程序使用指定的缓存目录,而不是污染 sdcard 或其他目录。 Android 可以在需要的时候自动清理缓存目录。

这里是 Javadoc:
http://mttkay.github.com/droid-fu/com/github/droidfu/imageloader/ImageCache.html

【讨论】:

  • 谢谢,这真的很有帮助。
  • Android 不会管理此目录,仅当存储空间不足时(这不是您希望缓存工作的方式):“当设备内部存储空间不足时,Android 可能删除这些缓存文件以恢复空间。但是,您不应该依赖系统为您清理这些文件。您应该始终自己维护缓存文件并保持在合理的空间消耗限制范围内,例如 1MB。当用户卸载您的应用程序,这些文件将被删除。”
  • @MrSnowflake 仅仅因为 Droid-Fu 使用了缓存目录,并不意味着它自己也不能清理。不是吗?我认为 Hugo 的观点是它使用了适当的存储位置,如果 Android 认为有必要,至少 有资格进行清理。
  • @spaarky21 我只是说操作系统不会为你做这件事。如果 Droid-Fu 能做到这一点,那就太好了!否则你应该自己做!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-24
  • 2020-04-27
  • 2015-09-03
  • 1970-01-01
  • 2010-12-29
  • 2014-08-16
相关资源
最近更新 更多