| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> Glide讲解 -> 正文阅读 |
|
[移动开发]Glide讲解 |
目录Glide简介
地址: Glide源码地址 Glide的优点
Glide的生命周期参考下面文章详解,这里只做总结 with()方法就是用于绑定生命周期的,with()方法的重载种类非常多,既可以传入Activity,也可以传入Fragment或者是Context。调用RequestManagerRetriever的静态get()方法得到一个RequestManagerRetriever对象,这个静态get()方法就是一个单例实现,然后再调用RequestManagerRetriever的实例get()方法,去获取RequestManager对象。 RequestManagerRetriever的实例get()方法,传入什么Context参数,Activity参数,Fragment参数等等,实际上只有两种情况而已,即传入Application类型的参数,和传入非Application类型的参数。
Glide如何实现图片缓存的参考:Android:深入剖析图片加载库Glide缓存功能(源码分析)
Glide的缓存机制使得 Glide具备非常好的图片缓存效果,从而使得具备较高的图片加载效率。
三级缓存or二级缓存?
内存缓存实现原理Glide的内存缓存实现是基于:LruCache 算法(Least Recently Used) & 弱引用机制
磁盘缓存实现原理使用Glide 自定义的DiskLruCache算法
Glide5大磁盘缓存策略
如果在内存缓存中没获取到数据会通过EngineJob开启线程池去加载图片,这里有2个关键类:DecodeJob 和EngineJob。EngineJob 内部维护了线程池,用来管理资源加载,当资源加载完毕的时候通知回调; DecodeJob是线程池中的一个任务。 磁盘缓存是在EngineJob中的DecodeJob任务中完成的,依次通过ResourcesCacheGenerator、SourceGenerator、DataCacheGenerator来获取缓存数据。ResourcesCacheGenerator获取的是转换过的缓存数据;SourceGenerator获取的是未经转换的原始的缓存数据;DataCacheGenerator是通过网络获取图片数据再按照按照缓存策略的不同去缓存不同的图片到磁盘上。 引入缓存的目的
Glide缓存流程Glide缓存分为:内存缓存和磁盘缓存,其中内存缓存是由弱引用 + Lrucache组成 从内存缓存读取总结从磁盘缓存读取总结写入磁盘缓存
写入内存缓存Glide 将图片写入 内存缓存的时机:图片加载完成后 、图片显示出来前
至此,实现了:
汇总用一张图将整个Glide 的图片缓存流程汇总
Glide源码总结图解参考:Android:手把手带你深入图片加载库Glide源码分析 with()
load()
into()
在第2步的RequestManager的load()中,最终返回一个DrawableTypeRequest对象
但 DrawableTypeRequest类中并没有load()和第3步需要分析的into(),所以load() 和 into() 是在DrawableTypeRequest类的父类中:DrawableRequestBuilder类 总结一图总结Glide的基本功能图片加载的全过程 |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年2日历 | -2025/2/5 22:58:43- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |