猿诗人的博客

记录点点滴滴

OkHttp3源码解析--设计模式

来看一下OkHttp3使用到的编码中的设计模式: 构造者模式; 工厂模式; 观察者模式; 单例模式; 策略模式; 责任链模式; 享元模式; 分辨说一下这些设计模式运用。 构造者模式 这个设计模式运用的太多了,如OkHttpClient、Request、Respons...

2019-04-18 20:08:25

阅读数 102

评论数 0

OkHttp3源码解析--拦截器链

前面说到的同步请求RealCall和异步请求AsyncCall,在执行execute方法时都会执行下面一句: Response response = getResponseWithInterceptorChain(); 这一句就是调用了拦截器链,执行了一系列操作,完成了请求访问,并将结果返回。 ...

2019-04-18 20:08:00

阅读数 26

评论数 0

OkHttp3源码解析--拦截器RetryAndFollowUpInterceptor

看一下OkHttp内置的第一个拦截器RetryAndFollowUpInterceptor: RetryAndFollowUpInterceptor public final class RetryAndFollowUpInterceptor implements Interceptor { ​ ...

2019-04-18 20:06:30

阅读数 29

评论数 0

OkHttp3源码解析--拦截器ConnectInterceptor-相关类

经过上面的缓存拦截器,如果没有获取到可用的缓存,还是需要建立Socket连接。为当前请求找到合适的连接,可能复用已有连接也可能是重新创建的连接。 接下来就看一下ConnectInterceptor: ConnectInterceptor public final class ConnectInt...

2019-04-18 20:06:20

阅读数 27

评论数 0

OkHttp3源码解析--拦截器ConnectInterceptor-处理流程

依旧再看一下ConnectInterceptor的intercept方法: public final class ConnectInterceptor implements Interceptor { public final OkHttpClient client;//已经创建的OkHttp...

2019-04-18 20:06:10

阅读数 39

评论数 0

OkHttp3源码解析--OkHttpClient和Request创建过程

OkHttp3的分析过程将以以下代码调用过程进行: //步骤1:创建OkHttpClient对象 OkHttpClient client = new OkHttpClient.Builder() .readTimeout(5, TimeUnit.SECONDS) .build(); //步...

2019-04-18 20:06:02

阅读数 24

评论数 0

OkHttp3源码解析--拦截器CallServerInterceptor

这是做后一个拦截器,ConnectInterceptor已经连接到服务器了,接下来我们就是写入请求数据以及读出返回数据了: 写入请求头 写入请求体 读取响应头 读取响应体 看一下代码: /** This is the last interceptor in the chain....

2019-04-18 20:05:53

阅读数 40

评论数 0

OkHttp3源码解析--拦截器CacheInterceptor

CacheInterceptor顾名思义,它是和缓存的管理和获取相关的: 从缓存中匹配Request的请求响应结果,根据缓存策略,如果能找到可用的缓存,直接返回; 将服务器返回的请求结果,写入到缓存中; 更新现有缓存; 设置缓存 //缓存文件夹 File cacheFile = n...

2019-04-18 20:05:43

阅读数 19

评论数 0

OkHttp3源码解析--拦截器BridgeInterceptor

桥拦截器的作用有: 负责把用户构造的请求转换为发送给服务器的请求,把服务器返回的响应转换为对用户友好的响应; 转换的过程就是添加一些服务端需要的header信息; 在Request阶段配置用户信息,并添加一些请求头。在Response阶段,进行gzip解压。 将我们创建的请求对象转...

2019-04-18 20:05:33

阅读数 20

评论数 0

OkHttp3源码解析--Call异步请求

来看一下异步请求的源码流程,先看一下异步请求使用流程: //步骤1:创建OkHttpClient对象 OkHttpClient client = new OkHttpClient.Builder() .readTimeout(5, TimeUnit.SECONDS) .build(); /...

2019-04-18 20:05:22

阅读数 46

评论数 0

OkHttp3源码解析--Call同步请求

前面创建了Call对象,接下来就是执行。执行又分为了同步执行和异步执行,先看同步执行过程。 还是之前的过程: //步骤1:创建OkHttpClient对象 OkHttpClient client = new OkHttpClient.Builder() .readTimeout(5, Time...

2019-04-18 20:05:13

阅读数 47

评论数 0

OkHttp3源码解析--Call创建过程

再来看之前的过程: //步骤1:创建OkHttpClient对象 OkHttpClient client = new OkHttpClient.Builder() .readTimeout(5, TimeUnit.SECONDS) .build(); //步骤2:创建Request对象 R...

2019-04-18 20:05:02

阅读数 26

评论数 0

OkHttp3简介与使用

OkHttp是一个非常高效的Http客户端,近年来几乎所有的Android应用都会使用它作为网络访问的框架。它有以下几个重要的特点: 支持HTTP/2; 支持连接复用; 内部维护连接池; 支持GZIP压缩,节省流量; 维护缓存,提高响应效率; 支持自动重连; 等等 ...

2019-04-18 20:04:53

阅读数 24

评论数 0

Android USB设备通信--读写操作

进行读写操作的前提: 获取UsbDeviceConnection对象,即建立连接; 正确获取到所需要的UsbInterface对象,并占用这个通信接口; 正确获取到所需要的Endpoint,包括读Endpoint和写Endpoint; 创建相应的数据缓存区,包括读写数据缓存区。 protected...

2019-04-18 20:04:08

阅读数 88

评论数 0

Android USB设备通信--连接设备

Android设备检测到USB设备插入,用户授予连接权限后,即可进行设备的连接流程。 /** 连接设备 */ private void connectDevice(UsbDevice usbDevice){ //Android标准的api,判断设备是否有连接权限 if (mUsbManager...

2019-04-18 20:03:41

阅读数 43

评论数 0

Android USB设备通信--插拔监测

电子秤和读卡器都可以通过usb口和pos通信。 设备插拔,系统广播 插入或者拔出usb设备时,Android系统都会发出广播,我们可以通过广播监听者BrocastReceiver监听相应的广播,进行相应的初始化或者资源释放。共有三种广播: 设备插入广播 设备授权广播 设备播出广播 public c...

2019-04-18 20:03:31

阅读数 62

评论数 0

H264视频传输、编解码----FFmpeg软解码

记录一下之前项目的实际使用过程。 将按照Java层——>JNI接口——>JNI代码中使用FFmpeg解码。 首先Java层: public class CodecWrapper { //加载FFmpeg的动态so库 static { System.lo...

2019-04-18 20:00:49

阅读数 91

评论数 0

H264视频传输、编解码----MediaCodec硬解码

public class RtspDecoder { private static final String TAG = RtspDecoder.class.getSimpleName(); //处理音视频的编解码的类MediaCodec private MediaCode...

2019-04-18 20:00:21

阅读数 73

评论数 0

H264视频传输、编解码----RTP协议对H264数据帧拆包、打包、解包过程

H264帧需要通过RTP协议进行传输,这其中就涉及到H264数据帧的封包、拆包和解包等过程。 RTP协议格式 下面是 RFC 3550中规定的 RTP 头的结构: 0 1 2 3 ...

2019-04-18 19:59:46

阅读数 143

评论数 0

H264视频传输、编解码----RTP/RTCP/RTSP协议数据传输基于UDP or TCP

用一句简单的话总结:RTSP发起/终结控制流媒体、RTP传输流媒体数据、RTCP对RTP数据进行控制,同步。 一般情况下,RTSP协议采用TCP协议传输控制流媒体的指令,RTP/RTCP协议采用UDP方式传输控制指令。但是有时候RTSP协议数据也可以使用UDP,或者RTP/RTCP也可以使用TC...

2019-04-18 19:59:37

阅读数 80

评论数 0

提示
确定要删除当前文章?
取消 删除