【问题标题】:Volley : Image CachingVolley : 图像缓存
【发布时间】:2013-10-24 04:19:13
【问题描述】:

我是 Volley 和缓存方面的新手:P。尽管我已经浏览了许多与 Volley 进行图像缓存相关的文章和帖子,但我仍然不清楚使用 Volley 进行图像缓存的最佳/首选方式。像磁盘缓存或内存? Volley 已经提供了哪些支持以及如何提供(与 L1 和 L2 缓存支持相关)? 在我的情况下,我使用 NetworkImageView 来填充列表视图,其中包含要从网络中获取的图像。 提前致谢!

【问题讨论】:

标签: android-volley networkimageview


【解决方案1】:

对于图像缓存,volley 希望您提供一个实现图像内存缓存。此缓存在应用程序运行期间使用,以加快使用内存的加载时间。

与图像无关,Volley 有自己的磁盘缓存,用于缓存它获得的每个响应,默认策略是根据 进行缓存缓存 HTTP 响应的标头

如果您在应用中加载的图像有缓存头,它们将根据它们缓存在磁盘上,否则不会。

如果您对此策略不满意并想要强制磁盘缓存,则必须编辑/添加一些更改缓存策略的代码。有很多方法可以实现这一点,一种是提供您自己的实现来解析 HTTP 标头。看看 Volley 源码中的HttpHeaderParser

【讨论】:

  • 感谢伊泰!就像您说的那样,我不确定我或任何用户(将使用它)的图像是否具有缓存标头。因此,我试图仅强制 磁盘缓存 并且为此我提到:github.com/JakeWharton/DiskLruCache 但我不使用这是一种好方法还是任何其他方法可能更好。我也不清楚我是否可以在这里使用DiskBasedCache 的凌空抽射
  • 小心:您确实想要在ImageLoader 构造函数中需要内存缓存的地方使用磁盘缓存。如果你想强制缓存,你必须这样做 - 编辑 Volley 源代码以解析每个 HTTP 标头,就像它具有缓存标头一样,或者更改对缓存中条目的检查。另外,如果我的回答有帮助,如果您接受,我将不胜感激,谢谢。
  • 好的。实际上我不知道 ImageLoader 中需要内存缓存。我错过了提到传递的缓存应该是“用作 L1 缓存的缓存”的参考资料。 L1 显然是一个记忆(如果我错了,请纠正我 ;-))。
猜你喜欢
  • 2014-03-17
  • 2023-03-29
  • 2017-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-27
  • 2017-10-17
相关资源
最近更新 更多