• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

设计图片加载框架

武飞扬头像
little-sparrow
帮助2

线程池

Glide使用了三个线程池,不考虑动画的话就是两个

  1.  
    public final class GlideBuilder {
  2.  
    ...
  3.  
    private GlideExecutor sourceExecutor; //加载源文件的线程池,包括网络加载
  4.  
    private GlideExecutor diskCacheExecutor; //加载硬盘缓存的线程池
  5.  
    ...
  6.  
    private GlideExecutor animationExecutor; //动画线程池
  7.  
    ...
  8.  
    }

线程切换

无论是RxJava、Coroutines 还是 Glide,只要是想从子线程切换到 Android 主线程,都离不开 Handler

缓存

四级缓存,通过 LRUCache 进行管理

LRUCache

LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”

学新通

  • 新数据插入到链表头部
  • 每当缓存命中(即缓存数据被访问),则将数据移到链表头部
  • 当链表满的时候,将链表尾部的数据丢弃

学新通

防止 OOM

  • 软引用存储 Bitmap
  • onLowMemory
  • 像素品质(565、8888)
  • 内存缓存中保存裁剪变换后的图片
  • 5.0 以下,Bitmap 内存放到 Ashmem 区(Fresco)

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgccbba
系列文章
更多 icon
同类精品
更多 icon
继续加载