美文网首页Android架构师
如何封装一个图片加载库

如何封装一个图片加载库

作者: 超人TIGA | 来源:发表于2022-04-25 16:56 被阅读0次

    ①分级缓存,著名的LruCache算法,又称为近期最少使用算法。
    LruCache 中 Lru 算法的实现就是通过 LinkedHashMap 来实现的。LinkedHashMap继承于HashMap,
    它使用了一个双向链表来存储 Map 中的 Entry 顺序关系,对于 get、put、remove 等操作,
    LinkedHashMap 除了要做 HashMap 做的事情,还做些调整 Entry 顺序链表的工作。

    LruCache 中将 LinkedHashMap 的顺序设置为 LRU 顺序来实现 LRU 缓存,
    每次调用 get(也就是从内存缓存中取图片),则将该对象移到链表的尾端。
    调用 put 插入新的对象也是存储在链表尾端,这样当内存缓存达到设定的最大值时,将链表头部的对象(近期最少用到的)移除。

    ②如果缓存中没有,那就去持久化的层级去找。
    我们可以将图片资源放在文件夹里,当缓存中没有就在这些持久化的地方找。

    ③如果上面2步都找不到,那就是需要从服务器下载
    下载后持久化保存在手机里。

    ④需要显示图片时,因为图片的实际大小与控件的大小有可能相差很大,例如一张高清图放在了一个很小的控件里,这时候就需要对图片进行压缩降低分辨率,生成一张尺寸较小的图片并持久化起来。

    ⑤根据view的大小范围,加载不同尺寸的图片,减少消耗。
    例如:
    view:50X50 - 200X200 图片:photoId_100_100
    view:200X200 - 500X500 图片:photoId_500——500
    view:500X500 - 全屏 图片:原尺寸

    ⑥考虑多线程问题,下载需要在子线程下载

    相关文章

      网友评论

        本文标题:如何封装一个图片加载库

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