Glide源码分析4 -- 缓存,编解码和网络请求

本文深入分析Glide的Engine模块,包括任务提交和执行阶段。首先介绍核心类,如GenericRequest、Engine、MemoryCache、EngineJob和DecodeJob。任务提交阶段始于GenericRequest.begin(),通过engine.load()尝试内存缓存和活跃资源。任务执行阶段始于EngineRunnable.run(),涉及DataFetcher加载数据、ResourceDecoder解码、Transformation处理和ResourceTranscoder转码。整个过程涉及Glide的两级缓存和网络请求。
摘要由CSDN通过智能技术生成

1. 概述和核心类

Glide源码分析 – request创建与发送过程一文中,我们谈到request最终通过GenericRequest的onSizeReady()方法进行,其中调用了engine.load()方法去实际获取数据。本文主要讲述engine.load()之后发生的那些事,让大家能够对底层数据获取有个更清晰的认识。从这点也可以看出Glide设计分层的精妙。主要涉及的核心类如下

1)GenericRequest:定义了很多对request的处理方法,我们比较关心的是request的发送,它的入口是begin(),会调用到onSizeReady(),最终调用到engine.load(),也就是数据获取部分的入口
2)Engine:封装了数据获取的很多关键方法,向request层提供这些API,比如load(), release(), clearDiskCache()等方法。可以认为是一个外观模式。
3)MemoryCache:内存缓存类,先从缓存中获取数据,如果没有才做后面的工作。这是第一级缓存。Glide采用了两级缓存模式。第二级缓存为DiskLruCache,为磁盘缓存。获取磁盘缓存比较耗时,需要在子线程中进行,故而在DecodeJo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

谢杨易

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

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

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

打赏作者

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

抵扣说明:

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

余额充值