Glide 阅读源码解疑

简介: 转载请标明地址 QuincySx: http://www.jianshu.com/p/e8adc9581f69问题不定时更新,如果你也有问题欢迎在评论区提出Glide 是如何拓展不同的资源获取器的在 manifest 文件中 添加 m...

转载请标明地址 QuincySx: http://www.jianshu.com/p/e8adc9581f69

问题不定时更新,如果你也有问题欢迎在评论区提出

Glide 是如何拓展不同的资源获取器的

  1. 在 manifest 文件中 添加 meta-data 标签、key 为 GlideModule 的路径,value 为 "GlideModule"
  2. 在 RequestManager 的构造方法里 调用了 Glide.get(context) 方法,通过 ManifestParser 根据 meta-data 标签的 value 来获取所有 manifest 中配置的 GlideModule ,然后循环调用GlideModule.registerComponents() 方法,将 ModelLoader 通过 Glide.register() 方法注册到 GenericLoaderFactory 中

当添加几个相同类型的资源获取器时,Glide的选择策略是什么

在 Glide 中维护这一个 GenericLoaderFactory 对象,在 Glide.register() 调用 GenericLoaderFactory.register() 的方法中可以看到他是根据相应资源的 class(此处关于 ModelLoader 的加载可以查看 Glide 的构造方法) 来替换相应的 ModelLoader,也就是 Glide 的策略是如果一个后配置者会替代前者

发现 Glide 中使用网络图片时是调用的 load(String url) 这个方法、那么为什么源码中网络请求 DataFetcher 的类型 GlideUrl.class 他是怎么转换的

  1. 你传入的 String 会在 StreamStringLoader 类的父类中的 StringLoader.getResourceFetcher() 中将 String 转换为 Uri 并调用 StreamUriLoader.getResourceFetcher()
  2. 在 StreamUriLoader.getResourceFetcher() 判断是否是本地资源,如果是本地资源就加载,如果不是本地资源 那就去调用 HttpUrlGlideUrlLoader.getResourceFetcher()(默认的,如果配置过就是其他的 这也就是 GlideUrl.class 类型的加载器)进行网络加载
  3. 在 HttpUrlGlideUrlLoader.getResourceFetcher() 方法中,先判断缓存,然后 new 出 HttpUrlFetcher 返回,在进行网络请求

注释:这几个转换在 Glide 构造里 这些加载类都是用的 Factory 来加载的,在 Factory() 中他默认传递过,类似责任链模式

Glide 的缓存实现具体代码

目录
相关文章
|
5天前
|
云安全 人工智能 运维
当攻击全面Agent化,你的安全防御能否跟上AI Speed?
多起客户侧AK泄露事件应急的真实观察
1243 4
|
28天前
|
人工智能 JSON API
全网刷屏的 Jev 模型正式开放!一手实战测评 + 保姆级教程
全网爆火的 Jev 模型是什么?有什么用?怎么使用?怎么接入 AI 编程工具?效果真的好么?傻子可懂的 Jev 保姆级实战教程 + 项目实战测评来啦
9793 32
|
8天前
|
存储 人工智能 安全
千问办公官网入口网页版登录:qwenwork.cn 注册送2000积分、登录送100积分
阿里云千问办公(QwenWork)是AI智能工作平台,支持一句话生成PPT、表格、网页、视频及数据分析。个人免费版送2000积分+每日登录赠100分,含1GB存储、5个发布页;企业版198元/席/月起。阿里千问办公QwenWork官网:https://t.aliyun.com/U/0VCTGt 阿里AI工作平台,一句话完成数据分析、PPT 生成、视频剪辑、网页搭建等复杂任务
|
3天前
|
人工智能 API 开发工具
DeepSeek Harness 神插件:白嫖 13 家大厂模型
`dsh-our-free-model` 是 DeepSeek Harness 神级插件:零配置、零API Key、零账号,聚合13家大厂免费模型(含DeepSeek V4.1 Flash、Kimi K3等),支持本地网关、用量看板与自动降级,真正实现“白嫖即用”。
|
14天前
|
存储 人工智能 并行计算
大模型本地部署终端选型方法论:以 Qwen3.8-27B 为例的四档分层完整流程
本文提出一套大模型本地部署终端选型方法论:定约束、定档位、定框架、定参数四步决策法,配合入门、主力、质量、无损四档分层模型。以 Qwen3.8-27B 实测数据为例,逐环节解读显存、带宽、存储、散热、系统、预算等要素,给出面向不同预算的优选方案、决策自查清单与市场观察框架。文末前瞻 AI 笔记本的 CPU+GPU 与统一内存两条路线,论证四步决策法在新品类上的延续性。
|
5天前
|
Web App开发 人工智能 JavaScript
太猛了,一个月干到15W+,给大家推荐一个最近爆火的开源逆向工具:REA
REA(Reverse Engineer Anything)是近期爆火的开源AI逆向工具,4月发布,1个月内斩获15万+ Star。它让AI Agent无需源码即可分析二进制、APK、JS/Electron、HAR包等17类目标,自动反编译、生成可运行代码,并强制返回带证据与局限的结论。全本地执行,MIT协议,支持Hopper/Ghidra/IDA等引擎,一行命令即可上手。
631 1
太猛了,一个月干到15W+,给大家推荐一个最近爆火的开源逆向工具:REA
|
13天前
|
人工智能 JSON 自然语言处理
2026 年 Jev 决策模型深度拆解:原理解读、实战测评与保姆级落地教程
有一款特殊AI模型在开发者圈子刷屏,它摒弃传统大模型擅长的对话聊天能力,专注做高速结构化决策,它就是TypeSafe AI推出的Jev模型。该模型由ChatGPT共同发明人Diogo Almeida主导研发,定位为**System One Model(系统一模型)**,对标人类大脑快速直觉判断的思维模式,在响应延迟、调用成本、结构化输出稳定性上相比传统生成式大模型有着巨大差异。本文会完整拆解Jev底层原理、三大核心原语能力、适用业务场景,同时提供可直接运行的curl、Python代码示例,并且结合多组实测数据,客观分析模型优势与能力边界,帮助普通开发者和AI应用从业者快速上手落地。
934 1
|
9天前
|
人工智能 JSON 自然语言处理
2026 年 Jev 决策模型全解析:核心原理拆解,性能实战测评与落地部署教程
有一款特殊AI模型在开发者圈子刷屏,它摒弃传统大模型擅长的对话聊天能力,专注做高速结构化决策,它就是TypeSafe AI推出的Jev模型。该模型由ChatGPT共同发明人Diogo Almeida主导研发,定位为System One Model(系统一模型),对标人类大脑快速直觉判断的思维模式,在响应延迟、调用成本、结构化输出稳定性上相比传统生成式大模型有着巨大差异。本文会完整拆解Jev底层原理、三大核心原语能力、适用业务场景,同时提供可直接运行的curl、Python代码示例,并且结合多组实测数据,客观分析模型优势与能力边界,帮助普通开发者和AI应用从业者快速上手落地。
594 0

热门文章

最新文章