SDWebImage源码分析一之目录解读
2020-09-18 本文已影响0人
Queen_BJ
整体目录结构:
- SDWebImageCompat
处理不同平台(iOS、TV、OS、Watch)宏,以及根据文件名@2x、@3x进行图片处理和缩放 - SDWebImageOperation.h
添加cancel的delegate - SDImageCache
主要处理缓存逻辑,重点在NSCache(Memory)、Disk读写、清理Old File
清除缓存步骤:
1、先清除已超过最大缓存时间的缓存文件
2、保存缓存文件的大小
3、判断你的上限,进行第二轮的清除
4、默认的清除方式,先删除老的,达到期望缓存的大小,最大缓存的一半。
判断你的上限,进行第二轮的清除 - Downloader
1、SDWebImageDownloaderOperation 主要提供下载的Operation操作
2、SDWebImageDownloader 提供下载管理入口 - SDWebImageManager
提供外层管理cache和download入口 - SDWebImagePrefetcher
预处理获取Image,主要应用预加载的地方 - SDWebImageDecoder 图片解码等操作
为什么要对图片解码,针对是性能优化
因为我们从url中拉取的图片,一般都是运营配置,基本都不小。
我们知道图片显示到设备上,是按照RGBA等显示但是PNG和JPEG自身的格式并非RGBA的。这里的解压其实就是创建一个BitmapImage位图,先在非UI线程渲染图片,然后拿到UIImage去显示。
图片加载流程
查询图片缓存(内存缓存和磁盘缓存)如果在缓存中找不到图片,则调起网络接口进行图片下载并返回图片,除此之外,还需将图片保存到内存缓存和磁盘缓存中。