![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
开源框架
文章平均质量分 86
剖析优秀的开源框架,借鉴其中原理
跨平台coder
It's never too late to learn.
展开
-
OkHttp源码解析之重试重定向、桥、缓存
1.重试/重定向拦截器RetryAndFollowUpInterceptor 作用是连接失败后重试或者进行重定向。代码如下:@Override public Response intercept(Chain chain) throws IOException { Request request = chain.request(); RealInterceptorChain realChain = (RealInterceptorChain) chain; Transmitter原创 2020-11-17 00:54:51 · 673 阅读 · 0 评论 -
OkHttp源码解析之网络连接与请求
1 网络的建立1.1 获取可用的连接网络的建立由ConnectInterceptor拦截器完成,那么先看下该拦截器的实现:// We need the network to satisfy this request. Possibly for validating a conditional GET.// 顾名思义。如果不是GET的时候,那么就用doExtensiveHealthChecks来判断是否要进行额外的检查。boolean doExtensiveHealthChecks = !reque原创 2020-11-15 20:21:09 · 341 阅读 · 0 评论 -
OkHttp源码解析之请求数据与回调
1 使用首先从一个简单使用例子开始入手,下面的是源码中的一个例子: OkHttpClient client = new OkHttpClient();//步骤1 // Create request for remote resource. Request request = new Request.Builder() .url(ENDPOINT) .build();//步骤2 // Execute the request and retriev原创 2020-10-09 02:13:36 · 877 阅读 · 0 评论 -
Retrofit源码解析之网络请求
1 解析注释并生成ServiceMethod对象首先从Retrofit的create动态代理开始分析ServiceMethod<?> loadServiceMethod(Method method) { ServiceMethod<?> result = serviceMethodCache.get(method); if (result != null) return result; synchronized (serviceMethodCache)原创 2020-09-30 01:44:47 · 182 阅读 · 0 评论 -
Retrofit源码解析之整体流程解析
1 前言本文从流程的角度分析了Rtrofit的请求以及回调过程,对代码结构会有一个比较清晰的认知,具体的功能并没有跟进去。这样子的好处是不至于由于某个或者某几个具体功能的解析而使得整个思绪变得混乱。下一篇会对各个具体的功能各个击破,比如说注解解析等。2 构建Retrofit对象Rtrofit的一大特色就是可以配置各种工厂。比如说RxJavaCallAdapterFactory那么结果便可以生成Observer对象,你就可以方便的使用Rxjava来处理数据了。再比如说你也可以用protobuf或者gso原创 2020-09-26 23:56:35 · 138 阅读 · 0 评论 -
Retrofit源码解析之概括总览
1 前言首先,Retrofit是对OkHttp作了进一步的封装,网络请求的本质还是通过OkHttp来完成。其次,Retrofit运用了大量的设计模式,使得整体框架显得整洁明了。其中通过适配器模式甚至可以直接兼容Rxjava。2 注解Retrofi的一大特色就是应用了大量的注解。这些注解可分为三大部分:2.1 网络请求方法的注解从get到options对应着HTTP中的网络请求方式,其中最常用的应该是@GET以及@POST这两个注解了。可以这样子比喻。TCP相当于高速公路,GET相当于送急件的原创 2020-09-23 22:46:31 · 108 阅读 · 0 评论 -
EventBus源码解析之事件分发
前言本文主要介绍注册时候的事件分发逻辑以及调用者直接使用post触发的事件分发逻辑,以及过程中碰到了一些疑点的理解过程。源码分析1、注册中的粘性事件分发先贴上注册subscribe方法里面的粘性事件代码部分:if (subscriberMethod.sticky) { if (eventInheritance) { // Existing sti...原创 2018-12-21 21:11:31 · 460 阅读 · 0 评论 -
EventBus源码解析之注册
前言前面介绍了Eventbus的构造器,部分参数以及属性在注册时候也会用到。所以了解构造函数中Build的各个属性对后续也是有颇多帮助。有关于粘性事件的处理涉及到了事件分发,所以移到后续的EventBus之事件分发中分析。源码解析1、概括介绍首先注册的总入口还是在Eventbus.java文件里。注册分为两个步骤:第一步是根据类的类型查询符合条件的所有方法,第二步是订阅遍历到的信...原创 2018-12-19 15:02:11 · 296 阅读 · 0 评论 -
EventBus源码解析之构造器
前言EventBus的构造方法涉及到属性的初始化,以及一些重要参数的赋值、重要标志位的获取。代码分析1、EventBus构造EventBus的构造采用单例模式中的双检锁/双重校验锁方式,这种方式是多线程安全的。代码如下所示:static volatile EventBus defaultInstance;public static EventBus getDefault() { ...原创 2018-12-17 17:41:36 · 113 阅读 · 0 评论 -
EventBus源码解析之概括分析
前言与概述之前接触过CanBus相关的项目,大概的模型就是数据的发送与接收。代码中到处调用Handler以及静态对象,代码显得臃肿而且解耦方面做的不好,代码可读性差。于是思索着不重复造车,找了下相关开源代码。Evenbus的两个特性挺符合需求的:一个是代码量少,几行代码搞定功能,一个方法以及注解就满足了功能实现和线程的切换。另一个是解耦做的很好,接收处理数据与逻辑处理的交互交给EventBus...原创 2018-12-16 23:47:40 · 157 阅读 · 0 评论