图片下载框架概述

图片下载须要解决(考虑)哪些问题?

内存缓存

  • FIFO双向队列+LRU双向队列+map数据结构。能够参考LKImageKit。

本地缓存

  • 存储解码前的。解码后占用空间太大;
  • 异步IO线程读取本地图片数据,sdWebImage解码是在异步单线程中,当瞬时加载大量图片时,可能会是性能瓶颈。能够尝试在多个线程进行解码。

合并请求

  • 确保一张图片不会请求屡次
  • sdWebImage中,一个下载对应一个operation。屡次重复请求时,添加多个block。

取消请求

  • 能够只删除对应回调block。下载,解码,保存内存缓存,保存磁盘缓存照样继续进行。(快速滑动列表时,很大几率会再划过来)。
  • 取消下载等操做。(一个下载operation,没有对应回调时直接cancle).
  • 提供两种方案,根据不一样业务形态进行选择。

主流图片格式解码方案?

  • 子线程解码。SDWebImage使用串行队列进行解码。估计是为了实时下载,解码,显示(这种场景下,若是使用并发队列,顺序可能乱掉)这里应该能够优化。
  • 若是只是下载结束后解码,能够考虑使用异步多线程解码。
  • 解码格式主要有: Png/jpeg/webP等。 SDWebImage有对应解码模块。
  • GIF:使用FLAnimatedImage

渐进式加载

  • 能够逐行加载 或 模糊到清晰的加载,
  • 参考sdwebImage。我的感受从模糊到清晰的用户体验更好。
  • 具体实施时,能够调研下主流APP是否渐进显示。

极致优化

参考框架

相关文章
相关标签/搜索