glide记录

Glide是一款比较强大的android图片加载库,加载图片一行代码就能搞定。使用glide以及有一段时间了,最近打算深入的理解glide的工作原理,本文用来记录学习glide的相关知识。

Glide

glide图片的简单使用,只有一行代码glide.with().load().into()。

先说with方法

1. with方法用来控制glide图片加载的生命周期,里面可以传入activity、fragment、application。其实主要是分为两种,一种是application,一种是非application。
2. 当传入application 的时候,glide加载的生命周期跟随应用程序一样,不需要特殊处理
3. 当传入activity或者fragment的时候,glide会和activity的生命周期绑定。
这里实现的原理是,glide添加了一个透明的fragment,根据透明fragment的生命周期来监听activity生命周期。

load方法

load是用来加载图片资源的。根据传入的类型不同glide加载的方式不同。
说说glide缓存机制,一个是内存的缓存,一个是磁盘的缓存。

key的生成

glide缓存key的生成,根据图片的url地址和

注意:

这里如果想自定义key的生成可自己实现glideurl,传入load方法中
signature、with、height等十个参数,比较繁琐。所以一个图片的原图和缩略图对应的不是一张图片。

内存的缓存

skipyMemorycache可以控制是否需要内存缓存

分为两个部分,一个使用lrucache缓存,还有一个使用弱饮用机制缓存,主要是防止正在使用的图片缓存被lrucache清除

磁盘缓存

也是使用的lrucache
Google提供了一个disklrucache
diskcachestrategy可以控制磁盘缓存策略

  • diskcachestrategy.none 表示不本地缓存图片
  • diskcachestrategy.source 表示只缓存源图片
  • diskcachestrategy.result 表示只缓存转化后的图片
  • dikcachestrategy.all 表示既缓存源图片有缓存转化后的图片

into方法

主要是将图片显示view中
into显示的时候会根据imageview.getscalseltype对图片进行处理源码中只处理了两种,centercrop和fitcenter两种

into方法中也可以传入target,我们自定义处理主要有两种,一种simpletarget和viewtargwt
两者都可以拿到图片资源,可以处理很多事情

本文参考如下:

开始新的系列,Glide的基本用法

Glide系列第二弹,从源码的角度深入理解Glide的执行流程

深入探究Glide的缓存机制

带你玩转Glide的回调与监听

你可能感兴趣的:(glide记录)