开源框架源码分析
文章平均质量分 95
分析开源框架源码
Elson_6
Talk is cheap, show me the code.
展开
-
Glide系列(四) — Glide缓存流程分析
Glide 是一个图片加载库,跟它同类型的库还有 Picasso、Fresco、Universal-Image-Loader 等。基于 Glide 优秀的缓存管理策略和生命周期关联的特点,目前市面上对 Glide 的使用非常广,因此我们有必要深入研究下 Glide 相关的实现原理,便于更好的使用它。原创 2022-10-31 16:05:23 · 1681 阅读 · 0 评论 -
DiskLruCache 源码分析
我们知道 Glide 图片框架的内存缓存用的是 LruCache,磁盘缓存是 DiskLruCache,它们用的都是LRU算法。内存缓存的 LRU 还比较好理解,那么文件是如何按照 LRU 的思想进行管理的呢?本文将以 Glide 框架内的 DiskLruCache 代码来分析它的实现方式。原创 2022-10-27 23:08:03 · 820 阅读 · 0 评论 -
Glide系列(二) — DataLoadProvider 及与Encoder&Decoder的关系
Glide 是一个图片加载库,跟它同类型的库还有 Picasso、Fresco、Universal-Image-Loader 等。基于 Glide 优秀的缓存管理策略和生命周期关联的特点,目前市面上对 Glide 的使用非常广,因此我们有必要深入研究下 Glide 相关的实现原理,便于更好的使用它。原创 2020-06-08 11:04:45 · 1568 阅读 · 3 评论 -
Glide系列(一) — Glide 框架结构浅析
Glide 是一个图片加载库,跟它同类型的库还有 Picasso、Fresco、Universal-Image-Loader 等。Glide 框架的优点如下:1. 加载类型多样化:Glide 支持 Gif、WebP 等格式的图片。2. 生命周期的绑定:图片请求与页面生命周期绑定,避免内存泄漏。3. 高效的缓存策略: 1. 支持多种缓存策略 (Memory 和 Disk 图片缓存)。 2. 根据 ImageView 的大小来加载相应大小的图片尺寸。 3. 内存开销小。原创 2020-06-08 11:00:22 · 20702 阅读 · 1 评论 -
Glide系列(五) — Request 构建流程分析
Glide 是一个图片加载库,跟它同类型的库还有 Picasso、Fresco、Universal-Image-Loader 等。基于 Glide 优秀的缓存管理策略和生命周期关联的特点,目前市面上对 Glide 的使用非常广,因此我们有必要深入研究下 Glide 相关的实现原理,便于更好的使用它。原创 2022-11-11 11:13:17 · 564 阅读 · 0 评论 -
Glide系列(三) — LoadProvider、ModelLoader、DataFetcher和ResourceTranscoder关系
Glide 是一个图片加载库,跟它同类型的库还有 Picasso、Fresco、Universal-Image-Loader 等。基于 Glide 优秀的缓存管理策略和生命周期关联的特点,目前市面上对 Glide 的使用非常广,因此我们有必要深入研究下 Glide 相关的实现原理,便于更好的使用它。原创 2022-10-30 15:59:45 · 964 阅读 · 2 评论 -
RxJava(四) — 实现一个简易版的 RxJava 框架
RxJava 是一个响应式编程框架,里面代码比较复杂,本系列文章将从以下几个角度来分析这个框架。1. RxJava 的链路调用流程。2. RxJava 的常用操作符 `map、flatmap`。3. RxJava 的线程调度。4. 自己实现一个简易版的响应式框架。原创 2020-06-01 16:46:33 · 430 阅读 · 0 评论 -
RxJava(三) — 线程调度实现原理
RxJava 是一个响应式编程框架,里面代码比较复杂,本系列文章将从以下几个角度来分析这个框架。1. RxJava 的链路调用流程。2. RxJava 的常用操作符 `map、flatmap`。3. RxJava 的线程调度。4. 自己实现一个简易版的响应式框架。原创 2020-05-31 22:28:27 · 1221 阅读 · 0 评论 -
RxJava(二) — 常用操作符之 map & flatmap
RxJava 是一个响应式编程框架,里面代码比较复杂,本系列文章将从以下几个角度来分析这个框架。1. RxJava 的链路调用流程。2. RxJava 的常用操作符 `map、flatmap`。3. RxJava 的线程调度。4. 自己实现一个简易版的响应式框架。原创 2020-05-31 14:18:41 · 868 阅读 · 0 评论 -
RxJava(一) — 链路调用流程分析
RxJava 是一个响应式编程框架,里面代码比较复杂,本系列文章将从以下几个角度来分析这个框架。1. RxJava 的链路调用流程。2. RxJava 的常用操作符 map、flatmap。3. RxJava 的线程调度。4. 自己实现一个简易版的响应式框架。原创 2020-05-30 20:06:00 · 987 阅读 · 0 评论 -
SPI 机制(一) — ServiceLoader 解析
SPI 全称为`Service Provider Interface`,是JDK内置的一种服务提供发现机制。简单来说,它是一种动态替换发现机制。例如,在设计组件化路由框架的时候就会使用到 SPI 设计思想。原创 2020-05-29 11:56:12 · 3112 阅读 · 0 评论 -
SPI 机制(二) — AutoService 解析
SPI 全称为`Service Provider Interface`,是JDK内置的一种服务提供发现机制。简单来说,它是一种动态替换发现机制。例如,在设计组件化路由框架的时候就会使用到 SPI 设计思想。原创 2020-05-29 13:21:22 · 2556 阅读 · 0 评论 -
BlockCanary 源码分析
在 Android 开发过程中,经常会遇到 UI 卡顿的问题,那怎么去监测 UI 的卡顿呢?。题外话:滴滴的开发辅助框架提供的卡顿监测原理与 BlockCanary 一致。BlockCanary 是一个轻量的,非侵入式的性能监控组件,目前采集了 UI 卡顿相关的线程堆栈信息和CPU 使用信息,用于分析定位问题。BlockCanary :Github 传送门 https://github.com/markzhai/AndroidPerformanceMonitor。原创 2020-05-24 11:02:33 · 606 阅读 · 0 评论 -
LeakCanary 源码分析
LeakCanary 源码分析一、概述二、原理三、源码分析1. LeakCanary 的初始化2. Activity 的监测3. 如何判断观察对象是否内存泄漏一、概述在 Android 开发过程中会遇到内存问题,在内存问题的分析中有一项必不可少的环节是对 hprof 文件的分析,常见的 MAT 和 Leakcanry 都是针对hprof文件的分析工具。本文我们来分析一下 Leakcanry 的检测原理。二、原理弱引用: 在垃圾回收时,无论内存是否充足,都会将弱引用包装的对象回收。当JVM进行垃原创 2020-05-22 00:02:02 · 511 阅读 · 0 评论 -
EventBus 源码分析
为了实现组件间通信的简单性和高效性,出现了事件总线的设计。EventBus 便是其中的一个实现方案,它是一个 Android 事件发布/订阅框架,通过解耦发布者和订阅者来简化 Android 的事件传递。3.2.0在分析源码之前,我们先来看一下 EventBus类图,了解一下其主要成员类,这可以帮助我们从全貌去审视框架的结构设计。原创 2020-04-14 12:47:27 · 476 阅读 · 0 评论 -
面试:OkHttp
OkHttp常见面试题原创 2023-02-23 14:25:48 · 555 阅读 · 0 评论 -
OkHttp(二) — Interceptor 拦截器
Interceptor 拦截器一、概述二、RetryAndFollowUpInterceptor三、BridgeInterceptor四、CacheInterceptor五、ConnectInterceptor六、CallServerInterceptor一、概述OkHttp 版本: 3.14.7在 OkHttp(一) — OkHttp 调用流程分析 中,我们介绍了一个请求的调用流程。请求...原创 2020-03-22 16:38:51 · 777 阅读 · 0 评论 -
OkHttp(一) — OkHttp 调用流程分析
OKHttp 调用流程分析一、概述二、三、四、一、概述二、三、四、原创 2020-03-21 19:24:13 · 902 阅读 · 0 评论 -
Volley源码解析及相关拓展
关于Volley源码解析的文章很多,这里推荐一篇CodeKK的文章——《Volley 源码解析》 —— 注:文章链接已经找不到了,但网上转载很多。总的来说,Volley的源码比较好理解,而且具有很强的拓展性,下面贴出两张图(流程图,类图)。建议直接看源码,然后再看这两张图,分分钟就懂了。Volley 请求流程图Volley 框架的主要类关系图关于Volley的拓展根据类图,可以发现Volley支持原创 2016-08-28 12:06:49 · 567 阅读 · 0 评论 -
ARouter — Calling startActivity() from outside of an Activity ...
异常:Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?代码ARouter.getInstance() .build("/main/activity/main")原创 2018-01-22 11:39:02 · 992 阅读 · 0 评论 -
源码分析 — ARouter路由框架
一、ARouter整体结构二、ARouter初始化流程的源码分析1. ARouter初始化时序图2. ARouter初始化代码分析三、ARouter使用时常见的问题:3.1 ARouter拦截器优先级的问题3.2 Group分组的问题四、其他五、总结一、ARouter整体结构主要的类: 类名 类的描述 ARoute...原创 2018-03-09 11:19:23 · 1837 阅读 · 2 评论 -
源码分析 — VirtualAPK框架(一)之初始化
一、概述1.1 相关技术点1.2 参考1.3 版本二、插件框架初始化2.1 时序图2.2 框架初始化的源码分析三、插件的加载3.1 加载插件的示例代码3.2 插件初始化源码分析一、概述 文章看过千百遍,不如源码走一遍。 一则,提升阅读源码的能力; 二则,在阅读源码的过程中学会思考,理解其实现原理; 如是,便有了此文。...原创 2018-03-14 16:12:20 · 486 阅读 · 0 评论 -
源码分析 — VirtualAPK框架(二)之四大组件
一、概述1.1 相关技术点1.2 参考文章1.3 版本二、Activity2.1 原理2.2 代码分析三、BroadcastReceiver四、Service五、ContentProvider一、概述1.1 相关技术点设计模式 — 动态代理模式源码分析 — Activity的清单注册校验源码分析 — ActivityThread(...原创 2018-03-30 17:34:04 · 513 阅读 · 0 评论