![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
开源框架
Super鸣
这个作者很懒,什么都没留下…
展开
-
读源码-LeakCanary2.4解析
文章目录1-基本原理1.1-Reference & ReferenceQueue1.2-对象回收监听2-LeakCanary源码分析2.1-初始化2.2-Activity监听2.3-hprof文件解析总结本文基于LeakCanary版本:'com.squareup.leakcanary:leakcanary-android:2.4'1-基本原理 在开始LeakCanary源码分析前,先来了解下Refercence及ReferenceQueue,它们是LeakCanary实现内存泄漏监听的核原创 2020-07-07 10:10:26 · 736 阅读 · 2 评论 -
读源码-MVVM实现与原理分析
文章目录1-MVVM简介1.1-MVC & MVP & MVVM1.2-MVVM结构2-MVVM实现3-源码分析3.1-DataBinding3.2-ViewModel3.3-Lifecycle3.4-LiveData1-MVVM简介1.1-MVC & MVP & MVVMMVPMVVM与MVP结构类似,MVP也是通过Presenter将View与Model解耦。不过MVVM是基于观察者模式,viewModel不持有Activity/Fragment实例,数据更新驱原创 2020-06-17 19:40:33 · 334 阅读 · 0 评论 -
读源码-Retrofit源码解析
文章目录1-基本流程1.1-创建Retrofit实例1.2-创建请求接口2-总结本文基于Retrofit版本:com.squareup.retrofit2:retrofit:2.9.01-基本流程Retrofit框架其实可以理解为OkHttp的第一个Interceptor,对OkHttp的请求及结果进行处理,符合RESTful规范的一个框架,同时也支持通过RxJava实现响应式编程,通过一系列的封装使得OkHttp用起来更方便。本文重点解析Retrofit部分原理,至于其核心的OkHttp部分前面的原创 2020-06-12 21:24:12 · 462 阅读 · 0 评论 -
读源码-OkHttp源码解析
本文基于OkHttp版本,该版本是用Kotlin实现:com.squareup.okhttp3:okhttp:4.7.21-基本流程?OkHttp这个框架就不用过多介绍了吧,一句话概括就是对Socket编程的封装实现,方便实现网络通信。什么是Socket编程?Socket是TCP/IP协议的抽象实现,详情可以去看看:一篇文章带你熟悉 TCP/IP 协议-(一)String testUrl = "https://wanandroid.com/wxarticle/chapters/json";//@1原创 2020-06-10 11:09:29 · 397 阅读 · 0 评论 -
读源码-VirtualView源码解析
文章目录1-基本原理2-源码解析2.1-xml模板描述2.2-xml模板编译2.3-.out预解析2.4-.out解析构建组件2.5-数据绑定与事件处理1-基本原理VirtualView是天猫出品的组件级别的动态化方案,通过动态下发xml模板到客户端,客户端完成模板解析、数据绑定、事件处理等实现动态化。实际常用的应用场景如下:按照VirtualView SDK中的原生或拓展组件编写Xml模板,和Android中的布局xml类似将Xml模板解析为二进制文件.out,和Android中xml文件解析原创 2020-06-01 21:30:17 · 439 阅读 · 0 评论 -
读源码-Glide源码解析
文章目录1-初始化with()2-加载准备load()3-加载显示图片 into()4-Glide三级缓存机制5-总结本文基于Glide版本:com.github.bumptech.glide:glide:4.11.0Glide最常用的一行代码如下,也概括了Glide的初始化、加载图片(本地、缓存、网络图片)、绑定显示的流程。本文就从该行代码开启Glide的源码之旅。Glide.with(this).load(url).into(mainPic);1-初始化with()首先是Glide.with原创 2020-05-31 19:33:02 · 660 阅读 · 0 评论 -
读源码-ButterKnife源码解析
文章目录1-自定义注解处理器2-生成对应的className_ViewBinding.java3-流程总结本文基于ButterKnife版本:'com.jakewharton:butterknife:10.2.1''com.jakewharton:butterknife-compiler:10.2.1'1-自定义注解处理器java代码编译期,javac会调用java注解器来处理注解相关。先看下butterknife-compiler库中的核心ButterKnifeProcessor通过继承Abs原创 2020-05-28 15:41:04 · 276 阅读 · 0 评论 -
读源码-ARouter源码解析
文章目录1-初始化2-路由跳转3-@Interceptor拦截4-@Autowired参数注解1-初始化ARouter.init()开始,init方法的主要工作就是ARouter实例化,_ARouter的初始化。_ARouter是具体实现类。这里用到了外观模式,将所有API通过ARouter暴露,具体实现则交由_ARouter//ARouter.javapublic static void init(Application application) { if (!hasInit) {原创 2020-05-28 15:39:54 · 252 阅读 · 0 评论 -
读源码-EventBus源码解析
目录1-注册1.1-核心1.2-注册具体源码2-取消注册3-事件发送4-粘性事件1-注册1.1-核心注册主要原理就是EventBus的三个map变量的注册:subscriptionsByEventType | EventType为key,Subscription列表为ValuetypesBySubscriber | 注册对象subscriber为key,EventType列表为ValuestickyEvents | EventType为key,Event对象为Value字段说明:原创 2020-05-28 15:37:42 · 204 阅读 · 0 评论