Android 开源项目
Kerwin zhang
这个作者很懒,什么都没留下…
展开
-
EventBus3.0 源码解析
EventBus,是一个基于Publish/Subscribe的事件总线框架。更通俗的讲,EventBus就是一个基于观察者模式的框架,但是EventBus在观察者模式的基础上有很大一部分改进,基本是实现了Publish/Subscribe的解耦。这里主要对EventBus3.0的实现原理及源码进行分析,关于EventBus的具体用法,可以去GitHub具体查看,这里不做过多介绍。通过对E...原创 2018-03-29 18:42:48 · 468 阅读 · 0 评论 -
RxJava源码分析
RxJava源码分析基于RxJava1.3.8。 题外话: 在写这边博客之前曾犹豫过很久,因为RxJava的源码非常复杂,感觉不是在一两篇博客中就能讲解清楚。但是正式因为RxJava的源码非常复杂,我也想通过写博客的方式来加深自己对RxJava源码的认识,同时也算是做笔记了,能时不时的翻出来看看,以防止忘记。概述虽然RxJava2也发布了很长时间了,但是对于...原创 2018-05-23 23:32:40 · 331 阅读 · 0 评论 -
Retrofit2源码分析(2) CallAdapter详解
Retrofit源码分析基于2.4.0。本章节中将对Retrofit2中的CallAdapter机制做详细讲解。在上一章节中曾提到了Call对象的创建是通过是通过ServiceMethod.adapt()完成的,这里在看看该方法的源码:ServiceMethod.adapt()方法: T adapt(Call<R> call) { return c...原创 2018-05-23 23:30:02 · 774 阅读 · 0 评论 -
Retrofit2源码分析
Retrofit源码分析基于2.4.0。关于Retrofit的基本使用可以参照 Retrofit官网。Retrofit是Java及Android平台上类型安全的Http客户端。这是官方给出关于Retrofit的简介。这里需要明确:Retrofit只是一个Http网络请求封装库,该库的主要工作是对网络请求进行封装,最终实现网络请求的操作是由Okhttp完成的。基本使用...原创 2018-05-23 23:29:11 · 334 阅读 · 0 评论 -
Okhttp3源码分析(3) Interceptor拦截器
okhttp3源码分析基于okhttp3.10.0。在前面章节里提到过,okhttp不管是同步请求还是异步请求,最终都是通过RealCall.getResponseWithInterceptorChain()方法获取请求响应的,该方法的核心功能就是要在本章节介绍的okhttp的Interceptor拦截器的工作机制。Interceptor介绍关于okhttp的Intercept...原创 2018-05-23 23:26:15 · 628 阅读 · 0 评论 -
Okhttp3源码分析(2) Dispatcher分发器
okhttp3源码分析基于okhttp3.10.0。在上一章节中提到在RealCall请求方法中,不管是同步请求方法execute()还是异步请求方法enqueue(CallBack)最终都会调用Dispatcher分发器的相关方法,所以这里对Dispatcher类做具体分析。DispatcherDispatcher,顾名思义就是分发器,主要的作用就是用于处理具体的网络请求...原创 2018-05-23 23:23:17 · 258 阅读 · 0 评论 -
Okhttp3源码分析
关于okhttp的特点及相关功能的介绍可以查看官网的介绍:http://square.github.io/okhttp/https://github.com/square/okhttp/wiki基本使用使用okhttp发起一次网络请求,只需要以下流程即可:创建OkHttpClient创建Request对象创建一个Call对象,用于发起请求发起网络请求(同步请求ex...原创 2018-05-23 23:21:28 · 317 阅读 · 0 评论 -
Java AbstractProcessor实现自定义ButterKnife
在上一节中Java注解及自定义注解处理器,主要是说明了Java注解的基本用法以及通过反射在JVM运行时实现Java的注解处理器,同时也说明了通过反射实现注解处理器会对代码的运行性能有一定影响。所以这里主要说明另一种方式,也就是通过AbstractProcessor在Java编译时生成代码的方式实现注解处理器。AbstractProcessor介绍AbstractProcessor,...原创 2018-03-27 14:11:04 · 10548 阅读 · 3 评论 -
EventBus3.0 性能提升之添加索引
EventBus3.0 源码解析 一文中,在分析Subscriber的register()过程中,说到过一个方法方法findUsingReflectionInSingleClass,在该方法的作用是在RunTime期间通过反射获取Subscriber中的SubscriberMethod。这样就会产生一个问题,在RunTime期间使用反射对程序运行的性能有较大影响。这里我们可以看看EventBu...原创 2018-03-30 18:18:15 · 2436 阅读 · 0 评论 -
RxJava源码分析(2) 变换原理
RxJava源码分析基于RxJava1.3.8。在上一章节中,主要介绍了RxJava的基本使用并对该部分的源码做了详细分析。在这一章节中,将主要介绍RxJava的另一大核心功能:变换。 变换,就是将事件序列中的对象或整个序列进行加工处理,转换成不同的事件或事件序列。在RxJava中,提供了许多针对不同场景实现变换功能的操作符,如下:map() flatMap(),...原创 2018-05-23 23:35:34 · 400 阅读 · 0 评论