美文网首页
glide原理

glide原理

作者: 我与android的爱恨纠葛 | 来源:发表于2019-11-14 16:16 被阅读0次

    首先先了解图片三级缓存:

    三级缓存可以减少不必要的流量消耗,增加加载速度
    1,内存缓存,优先加载,速度最快
    2.本地缓存,次优先级加载,速度次之
    3.网络缓存,最后加载,速度由网速决定

    内存缓存一般使用LruChche缓存策略,首先需要或者应用可用的最大内存,然后设置缓存的可用大小,将图片的缓存大小设为最大缓存的1/8或者1/4
    本地缓存首先需要获取SD卡的根目录的路径,然后对图片进行保存和读取。在保存时需要对Url进行MD5加密,将加密后返回的字符串作为关键字创建文件夹,同时保存图片
    网络缓存图片时需要将网络获得的图片缓存到内存和SD卡中,因此需要在构造方法中初始化内存缓存工具类和SD卡缓存工具类。这里采用AsyncTask异步栈的方式实现图片的异步下载。

    先创建一个glide单例,初始化操作磁盘缓存的线程池
    初始化内存大小


    AB75BEAB70EC45108F78571C461032A4.jpg

    然后进行三级缓存:


    4FB5B05B656140CEB4F1967E24C8A24E.jpg

    28-29,创建图片URL、宽、高等一系列参数创建key
    31-39,从内存缓存弱引用中根据Key获取图片资源,有就返回,没有往下执行
    41-49,从内存缓存Lrucache中根绝key获取图片资源,有就返回,没有往下执行
    通过以上代码可以看出Glide内存缓存采用了2级,第一级是弱引用,第二级才是Lrucache,如果软引用中没有
    对应的图片缓存,就从Lrucache中获取,如果还是没有才去检查磁盘缓存,如果还是没有最后才去网络下载

    总结:


    3C2ED9095D0C4B53B7E9756CE1F1B12E.jpg

    相关文章

      网友评论

          本文标题:glide原理

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