美文网首页面试题目
SDWebImage缓存机制

SDWebImage缓存机制

作者: 司夜 | 来源:发表于2016-07-03 16:13 被阅读630次

    1.先显示placeholderimage(占位图片),再根据URL来在本地查找图片

    2.从缓存中根据cachekey来查找图片是否已经在缓存当中

    3.如果缓存中已经有图片缓存,进行回调并将图片展示

    4.如果内存中没有该图片的缓存,那么生成NSInvocationOperation添加到队列,从硬盘中查找图片是否已经被下载。

    5.根据URLkey在硬盘缓存目录下尝试读取图片文件,这一步是在NSOperation在操作,所以要回到主线程进行结果回调。

    6.如果上一步操作从硬盘中读取到了图片,那么将图片添加到内存缓存中(如果空闲内存过小,会先清空内存缓存),然后进行回调展示图片

    7.如果从硬盘缓存目录读取不到图片,那就说明所有的缓存中都不存在该图片,那么需要下载图片

    8.共享或者创建一个下载器,开始下载图片。

    9.图片下载由NSURLConnection来做,实现相关的delegate来判断图片的下载状态,下载中、下载完成、下载失败。

    10利用imageIO做按图片下载进度加载效果

    11.数据下载完成后交给SDWebImageDecoder做图片解码处理。

    12.图片解码处理在一个NSOperationQueue
    完成,不会拖慢主线程的UI,所有如果有需要对下载的图片进行二次处理时,最哈也在这里完成,效率会好很多。

    13.当主线程中宣告解码按成 之后,回调给下载器,下载器再回调给回调给 SDWebImageManager,告知图片下载完成。

    14.通知所有的下载器下载完成,回调给所需要的地方来进行图片的展示。

    15.将图片保存到到SDImageCache中,内存缓存和硬盘缓存都要保存。

    16.写文件到硬盘在单独的NSInvocationOperation中进行,避免拖慢主线程。


    相关文章

      网友评论

        本文标题:SDWebImage缓存机制

        本文链接:https://www.haomeiwen.com/subject/roqcjttx.html