图片下载框架概述
图片下载须要解决(考虑)哪些问题?
内存缓存
- FIFO双向队列+LRU双向队列+map数据结构。能够参考LKImageKit。
本地缓存
- 存储解码前的。解码后占用空间太大;
- 异步IO线程读取本地图片数据,sdWebImage解码是在异步单线程中,当瞬时加载大量图片时,可能会是性能瓶颈。能够尝试在多个线程进行解码。
合并请求
- 确保一张图片不会请求屡次
- sdWebImage中,一个下载对应一个operation。屡次重复请求时,添加多个block。
取消请求
- 能够只删除对应回调block。下载,解码,保存内存缓存,保存磁盘缓存照样继续进行。(快速滑动列表时,很大几率会再划过来)。
- 取消下载等操做。(一个下载operation,没有对应回调时直接cancle).
- 提供两种方案,根据不一样业务形态进行选择。
主流图片格式解码方案?
- 子线程解码。SDWebImage使用串行队列进行解码。估计是为了实时下载,解码,显示(这种场景下,若是使用并发队列,顺序可能乱掉)这里应该能够优化。
- 若是只是下载结束后解码,能够考虑使用异步多线程解码。
- 解码格式主要有: Png/jpeg/webP等。 SDWebImage有对应解码模块。
- GIF:使用FLAnimatedImage
渐进式加载
- 能够逐行加载 或 模糊到清晰的加载,
- 参考sdwebImage。我的感受从模糊到清晰的用户体验更好。
- 具体实施时,能够调研下主流APP是否渐进显示。
极致优化
参考框架
欢迎关注本站公众号,获取更多信息