Android开源框架如何说-Gilde4

概念

  • Glide是google官方推荐的,而且使用起来非常的方便而且功能十分强大,链式调用

  • 主方法

    • with()Glide.with()用于创建一个加载图片的实例,with()方法可以接收 Context、Activity 或者 Fragment 类型的参数,加载配置自定义AppGlideModule ,创建隐藏的Fragment来同步监听生命周期与整个组件的生命周期绑定在一起
    • load() :用于初始化一些参数,指定待加载的图片资源,支持加载各种各样的图片资源,包括网络图片、本地图片、应用资源、二进制流、Uri 对象等等并且可以指定格式加载asGif,asBitmap,asDrawable
    • into(): 将图片获取并通过一系列处理后加载到相应控件中,这部分逻辑最为复杂,建立请求,然后通过Engine引擎类将请求进行统一的处理,里面开启了两个线程池(diskcacheService)磁盘缓存线程池和(SourceService)源线程池,并且进行了两层缓存,除了我们常见的内存缓存外,还进行了活动资源的缓存,其中内部的网络请求是通过android原生的httpurlConnection去完成的
    • Glide#with获取一个全局的单例对象RequestManagerRetriever,由它负责去获取一个和Context相关的并且对Context唯一的RequestManager对象,并且已经和宿主Activity生命周期绑定。
      RequestManager#load构建一个RequestBuilder对象,供用户设置大量参数,并返回一个RequestBuilder对象。
      RequestBuilder#into构建一个Target和一个Request对象,并完成它们的双向绑定关系。在交由RequestManager之前检查是否需要发起请求,如果需要则进入下一步,否则直接结束。
      RequestManager#track触发请求request的执行,从而简单的图片加载至此结束,后续request加载状态会反应至target上面,进而和target相关的控件会得到更新,自此一个图片就正确的呈现在ui界面上。
  • 常用的方法

    • placeholder()
    • diskCacheStrategy()
    • error()
    • override()
    • thumbnail()

整体架构(可以从以下几个每个点深入切入)

  • Bitmap:android2.3、2.3+、8.0+ 内存分布,BitmapFactor(图片压缩)
  • 缓存机制:LruCache、DiskLruCache(LinkedHashMap)
  • Lifecycle:
  • 流程调用链:
  • 数据加载模块:DataFetcher、ModelLoader

加载核心Engine类

  • 内存缓存 LruBitmapPool
  • 本地缓存 DiskLruCacheFactory
  • sourceService 处理源资源的线程池
  • diskCacheService 处理本地缓存的线程池
  • callback

缓存机制

  • 和其他三级缓存一样,Glide的缓存读取顺序是 内存–>磁盘–>网络
    • 内存缓存中加载图片,有两个层级,一个是MemoryCache,一个是ActiveResouces
    • 磁盘、网络加载则开启线程加载
  • Glide的缓存资源分为两种:原图(SOURCE) 、处理图(RESULT)
  • Glide自动就是开启内存缓存.skipMemoryCache(true) 不必要配置
  • 磁盘缓存.diskCacheStrategy()四种策略
Android开源框架如何说-Gilde4_第1张图片
简易流程

你可能感兴趣的:(Android开源框架如何说-Gilde4)