图片加载框架Glide简单使用和缓存原理

Glide是一个轻量级的Android图片加载库,支持图片、Gif和视频。它提供高效的缓存策略,包括内存缓存(LruCache+弱引用)和磁盘缓存。Glide的使用流程包括GlideApp.with(context)、load(url)和into(iv)。在内存吃紧时,软引用避免了立即回收,而磁盘缓存用于持久存储。文章还探讨了如何通过设置inSampleSize等参数防止大图加载导致的OOM问题,并对比了Glide与Fresco的适用场景。
摘要由CSDN通过智能技术生成

基本使用流程

Glide最基本的使用流程就是下面这行代码,其它所有扩展的额外功能都是以其建造者链式调用的基础上增加的。

GlideApp.with(context).load(url).into(iv);

其中的GlideApp是注解处理器自动生成的,要使用GlideApp,必须先配置应用的AppGlideModule模块,里面可以为空配置,也可以根据实际情况添加指定配置。

@GlideModule
public class MyAppGlideModule extends AppGlideModule {

    @Override
    public void applyOptions(Context context, GlideBuilder builder) {
        // 实际使用中根据情况可以添加如下配置
        <!--builder.setDefaultRequestOptions(new RequestOptions().format(DecodeFormat.PREFER_RGB_565));-->
        <!--int memoryCacheSizeBytes = 1024 * 1024 * 20;-->
        <!--builder.setMemoryCache(new LruResourceCache(memoryCacheSizeBytes));-->
        <!--int bitmapPoolSizeBytes = 1024 * 1024 * 30;-->
        <!--builder.setBitmapPool(new LruBitmapPool(bitmapPoolSizeBytes));-->
        <!--int diskCacheSizeBytes = 1024 * 1024 * 100;-->
        <!--builder.setDiskCache(new InternalCacheDiskCacheFactory(context, diskCacheSizeBytes));-->
    }
}

源码解析

Glide框架图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hckoe3eR-1588411498138)(http://note.youdao.com/yws/res/3752/70AD6E9465804798B889A8AE4171EE76)]

GlideApp.with(context)
  1. 初始化各式各样的配置信息(包括缓存,请求线程池,大小,图片格式等等)以及glide对象。
  2. 将glide请求和application/SupportFragment/Fragment的生命周期绑定在一块。

with(context)加载流程图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p4JiWPQH-1588411498140)(http://note.youdao.com/yws/res/3755/WEBRESOURCE4f989e6cdae57aac2b05900557710aa2)]

load(url)

设置请求url,并记录url已设置的状态。

into(iv)
  1. 首先根据转码类transcodeClass类型返回不同的ImageViewTarget:BitmapImageViewTarget、DrawableImageViewTarget。

  2. 递归建立缩略图请求,没有缩略图请求,则直接进行正常请求。

  3. 如果没指定宽高,会根据ImageView的宽高计算出图片宽高,最终执行到onSizeReay()方法中的engine.load()方法。

  4. engine是一个负责加载和管理缓存资源的类.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vinson武

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值