OkHttp2连接池复用原理分析
摘要:一、概述 上一节讲了OkHttp3的从创建HttpClient到最后调用call.enqueue(callback)来执行一个网络请求并接收响应结果的源码分析流程。流程分析下来能够帮助我们理解这个框架,在理解整个执行流程的基础上我们分析一下上一节未分析到的遗留问题。比如:OkHttp3的连接池的复用
阅读全文
posted @
2020-02-29 15:40
飘杨......
阅读(1997)
推荐(0) 编辑
OkHttp执行流程源码分析
摘要:一、概述 先说下老生常谈的一个问题,我们为什么要学习OkHttp框架?在做技术选型的选型的时候一般看中技术的四项特点。1.是否稳定 、是否高效 2.使用是否方便。3.可扩展性是否够强 a.OkHttp已经被造出来好多年了,其应用范围非常的广泛,特别是这几年大大小小的公司都在使用,就连Google也把
阅读全文
posted @
2020-02-28 17:21
飘杨......
阅读(616)
推荐(0) 编辑
Android使用动态代理模仿Retrofit的create方法,使其可以返回任意的接口类型
摘要:一、概述 本节将模仿一下Retrofit的create泛型方法,根据传入的interface,生成一个代理对象。同个这个小例子可以加深对retrofit的理解 二、实际代码 定义一个book接口,通过动态带来创建其实现类,并调用其实现类的book方法 1.Book.java:普通的接口 2.ApiB
阅读全文
posted @
2020-02-26 13:36
飘杨......
阅读(1042)
推荐(0) 编辑
Android模仿Retrofit的建造者模式
摘要:一、概述 在Retrofit的框架中用的最多的是建造者模式,建造者模式对象与设置的值相分离层次结构更加清晰,在使用的时候通过链式调用赋值,层次清晰明了,避免了我们要new不多的对象需要构造多个构造函数,或者创建对象后一个个的赋值,非常的方便。下面我们也模仿一个建造者模式看看其神奇之处。 二、实例代码
阅读全文
posted @
2020-02-26 11:36
飘杨......
阅读(354)
推荐(1) 编辑
Retrofit2的GsonConverterFactory.create()和RxJava2CallAdapterFactory.create()的实现过程以及执行过程
摘要:一概述 上一节分析了retrofit2从创建到执行的完整流程,本节分析一下两个非常重要的功能。数据转换器的实现以及网络请求适配器的实现。 二、GsonConvertFactory.create()数据转换器的实现过程以及执行过程 我们先看下GsonConvertFactory.crete()的源代码
阅读全文
posted @
2020-02-25 22:34
飘杨......
阅读(3037)
推荐(0) 编辑
Retrofit执行流程以及源代码分析详解
摘要:一、概述 Retrofit目前是Android网络请求中非常流行的一个框架。为什么这么流行?那就要从行业内的各位大佬的技术选型开始。我们一般在做技术选型的时候会参考以下几个标准: 1.框架是否能解决我们的问题 2.框架是否稳定 3.框架是否易用 根据以上三点,我们来谈谈为什么要用这个框架。 1.解决
阅读全文
posted @
2020-02-25 15:21
飘杨......
阅读(558)
推荐(0) 编辑
Android利用注解自定义一个超级简单的ButterKnife
摘要:一、概述 自从Java1.5后,其提供了一个非常强大的功能那就是注解。在普通的开发中可能不会自定义注解,甚至有些时候一个app开发下来完全不需要注解。但是想要在技术方面做一个纵深,自己封装框架,成为高级工程师,专家或者架构师,注解这块的知识是绕不开的。所以学习一下java中的注解对自己的内功修炼是非
阅读全文
posted @
2020-02-24 17:56
飘杨......
阅读(724)
推荐(0) 编辑
使用Gson+泛型制作一个序列化和反序列化的工具类
摘要:一、概述 本节给出一个封装好的使用Gson实现对象、List集合的序列化与反序列化的工具类。 1.Book.java类是一个javaben,里面定义了书本id和书本名称 2.JsonUtil.java是工具类 3.Test.java是测试类 二、具体实例 1.Book.java package co
阅读全文
posted @
2020-02-23 19:16
飘杨......
阅读(1206)
推荐(0) 编辑
Gson使用方法详解
摘要:一、概述 Gson是google提供的用来操作json数据的一个非常好用的类库。其使用范围非常的广泛,所以非常有必要对其进行系统的学习。 json是一种数据格式,确切的说是一种文本数据格式。其在网络通讯过程中的作用非常的明显。 目前大多数的网络通讯格式已经从xml替换为json格式。 其提供了序列化
阅读全文
posted @
2020-02-23 15:59
飘杨......
阅读(5473)
推荐(0) 编辑
RxJava2线程切换原理分析
摘要:一、概述 本节将分析RxJava2的线程切换模型。通过对线程切换源代码的分析到达对RxJava2线程切换彻底理解的目的。通过对本节的学习你会发现,RxJava2线程切换是如此的简单,仅仅是通过两个操作符就能完成从子线程到主线程,或者主线程到子线程,再或者从子线程到子线程的切换。对应的操作符为:obs
阅读全文
posted @
2020-02-19 16:16
飘杨......
阅读(3903)
推荐(0) 编辑
RxJava2链式调用操作符源码分析之map操作符
摘要:一、概述 在上一节中我们分析了一个最简单的从观察者被观察者的创建、数据的发送到接收的流程。本节会着重分析一下Map操作符的原理以及源代码级别的具体实现。 二、最简单的RxJava,从创建观察者、绑定观察者、发射数据到接收过程回顾(温故而知新,如果觉得不够清晰可以先看上一节的代码分析) 1.创建观察者
阅读全文
posted @
2020-02-18 15:30
飘杨......
阅读(770)
推荐(0) 编辑
RxJava2绑定流程分析之——观察者和被观察者是如何实现绑定的
摘要:一、概述 本小节从一个简单的当前线程绑定的例子说起,讲解一下RxJava2的被观察者和观察者是如何实现绑定的。搞明白原理以后就能够更好的理解:为什么上游只要执行了onNext方法,下游就能立马接收到。这就是传说中的“知其然,还有知其所以然”。嘎嘎。 二、最简单的绑定代码 绑定流程1.使用Observ
阅读全文
posted @
2020-02-17 17:54
飘杨......
阅读(446)
推荐(0) 编辑
Java代理模式(静态代理&动态代理)
摘要:一、概述 定义:为其他对象提供一种代理,以控制这个对象的访问。 代理模式的种类:静态代理和动态代理 二、静态代理 ps:我们创建一个Book用于基础操作,再创建一个JavaBook用来代理Book类的功能。 1.Book.java package com.yw.reflectjavalib.prox
阅读全文
posted @
2020-02-16 18:27
飘杨......
阅读(186)
推荐(0) 编辑
Java对泛型进行反射实战
摘要:一、概述 前两节接连介绍了,Java的反射技术,以及把Java的反射技术封装成类库。本节接下来介绍的内容都是基于以上两节来实现的。如果读者看起来吃力可以回过头看看前两节的内容,然后接着看本节内容。 二、实战 整体流程描述:首先先定义一个泛型的单例类Singleton,然后在BookManger中实例
阅读全文
posted @
2020-02-16 17:37
飘杨......
阅读(807)
推荐(0) 编辑
Java反射技术工具类
摘要:一、概述 在上一节详细介绍了Java的反射技术。例如:如何根据字符串获取一个Class对象,如何操作Method、Constructor、Filed等等。这一节针对上一节的内容做一个工具类的封装,让反射技术用起来更方便。 二、工具里:工具类中包含了所有必须的项,非常简单也非常的实用。 package
阅读全文
posted @
2020-02-16 17:22
飘杨......
阅读(423)
推荐(0) 编辑
Java反射例子汇总 Class Constructor Method Filed
摘要:一、反射概述 在平常的开发中Java的反射技术很少被用到,一般我们都是使用公司封装或者开源框架。而反射技术已经被包含到底层框架了,因此我们很少接触到。但是有些框架的原理或者源码如果想读懂就必须要理解并会使用反射技术。例如:EventBus、BufferKnife、android的插件化等等都会用到。
阅读全文
posted @
2020-02-16 17:17
飘杨......
阅读(229)
推荐(0) 编辑
Android调试注解处理器AnnotationProcessor
摘要:在开发的过程中有时候我们为了使代码更简洁、运行速度更高或者提高开发效率。通常情况下我们都需要自己开发一套框架或者借助第三方开源框架来实现这个目的。例如:我们可以借助ButterKnife来去掉findViewById、设置点击事件等重复的操作,通过EventBus可以方便的订阅以、发布、接收事件等。
阅读全文
posted @
2020-02-02 12:08
飘杨......
阅读(3714)
推荐(0) 编辑