android开源框架21-23Glide

Glide 重点

生命周期管理 和缓存

with

  1. 对于activity的:以onstart为例
  • 会新建2个空白fragment(androidx的fragment;app的fragment),用于监听生命周期函数。
  • 当监听到变化的时候,会调用ActivityFragmentLifeCycle(实现了LifeCycle)的onstart方法,这里是个集合,遍历调用执行onstart
  • LifecycleListener 在RequestManager里面实现的,这里再去分发调用Glide里面的其他的xxtarget类
  • 注意:其中fragment那里的创建 可以参考,用先存入集合再调用begintransaction comitallowingstateloss 来保证fragment不被重复创建,还用handler 移除集合 来保证不会重建,因为消息是在handler的等待队列里面的,要handler来把他放到执行队列里面。
  1. 对于没有界面的:
  • 用的applicationcontext,和整个程序一样的生命周期。
  1. with流程
  • 空白fragment(app+androidx)-->ActivityFragmentLifecycle实现lifecycle-->LifecycleListener-->RequestManager实现LifecycleListener-->glide里面其余的 ImageViewTarget、DefaultConnectivity...
  • ApplicationLifecycle 实现Lifecycle -->操作LifecycleListener

缓存分析

  1. 先调用活动缓存
    当前界面显示的都在活动缓存里面,生命周期的ondestory的时候 再把缓存数据全部放入LRU缓存
  2. 再调用内存LRU缓存
    需要用的时候会把数据放入活动缓存,删掉LRU里面的对应缓存
  3. 再调用本地LRU缓存 J 安卓之神写的 DiskLRU缓存
    参考的LRU缓存,需要的时候复制数据到活动缓存,不会删掉本地的
  4. 再网上取或者drawable本地取
    先存入本地LRU缓存,用的时候再走活动缓存

整体简化主线流程 glide11 的url版本 主要into

Glide构建
-->with:给每个RequestManager绑定一个空白fragment管理生命周期(分支:application无页面)
-->into:Request对象的构建:请求、宽、高、采样...
-->请求之前 先检测缓存
-->Engine缓存机制的检测:先检测活动缓存ActiveResources、再检测内存缓存LruResourceCache 如果命中任意一级缓存则回调直接显示
-->没有缓存,则在EnginJob构建异步任务
-->xxtask:执行Request之前,先检测DiskCache本地磁盘缓存
-->如果没有磁盘缓存,通过网络请求,返回输入流inputstream
-->解析输入流,进行采样压缩,得到Bitmap;这里有很多跳转中转包装的过程
-->Bitmap转换为Drawable
-->构建磁盘缓存DiskCache
-->构建内存缓存ActiveResource
-->回到ImageViewTarget 子类 DrawableImageViewTarget显示图片

看源码思路

  1. 第一次看:先看下别的博客的流程,有个大概概念
  2. 第二次看:先走主线流程,埋下伏笔
    接口的地方,一步步跳转进去找到实现即可。
  3. 第三次看:重点主线流程,关注下支线
  4. 第四次看:如果主线清晰了,再分析支线,不清晰则继续第四次....
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前言 最近有个想法——就是把 Android 主流开源框架进行深入分析,然后写成一系列文章,包括该框架的详细使用与...
    wildma阅读 2,135评论 0 12
  • 16宿命:用概率思维提高你的胜算 以前的我是风险厌恶者,不喜欢去冒险,但是人生放弃了冒险,也就放弃了无数的可能。 ...
    yichen大刀阅读 8,063评论 0 4
  • 公元:2019年11月28日19时42分农历:二零一九年 十一月 初三日 戌时干支:己亥乙亥己巳甲戌当月节气:立冬...
    石放阅读 7,507评论 0 2

友情链接更多精彩内容