SDWebImage原理以及使用流程
SDWebImage 这个类库提供了一个UIImageView的分类 用来加载网络远程图片。相信大家都用过SDWebImage,用的最多的方法就是 - (void)sd_setImageWithURL:(NSURL *)url 今天给大家说一下SDWebImage 的原理。 都知道SDWebImage 可以加载网络图片,那么SDWebImage 具体都有哪些功能呢? 缓存管理,异步下载,同个URL限制加载次数等。。。
SDWebImage加载图片流程: 首先会将占位图片显示placeholderImage显示出来,然后将URL交给SDWebImageManager 去处理。 SDWebImageManager 会交给SDImageCache 去内存缓存中查找图片是否下载了,如果已经下载了就会通过SDImageCacheDelegate回调给SDWebImageManager ,再通过SDWebImageManagerDelegate回调给UIImageView + WebCache前端展示图片; 如果内存缓存中并没有下载过图片,则会生成一个NSInvocationOperation 添加到队列中去硬盘中查找图片是否已经缓存。如果已经缓存,会将图片添加到内存缓存中(这里要注意一下,如果手机内存太小的话,会先清空内存缓存), 再通过SDWebImageManagerDelegate回调给前端展示图片。 如果硬盘中也没有缓存过图片,就证明所有缓存中都没有图片,这时就需要去下载了,生成一个SDWebImageDownloader 去下载图片,下载成功后,会添加到内存缓存和硬盘缓存中,再回调前端展示图片。
给大家说2个常用的方法(这里用swift写的,OC一样 自己去头文件找):1,SDImageCache.sharedImageCache().getSize() 获取图片缓存大小(注意,这里获取到的是内存缓存大小) 2,SDImageCache.sharedImageCache().clearDiskOnCompletion 清理缓存(同理,清理内存缓存)
还有一点 项目使用了SDWebImage 的,在APPdelegate中要加上
。 当内存警告时,取消当前正在进行的下载操作,并清理内存缓存中的所有图片。切记。

浙公网安备 33010602011771号