Kafka Morecoin 电力杆 docker安装 jquery oop Egret Engine 直销系统源码 change事件 git显示所有远程分支 python爬虫包 mysql重启 python的安装路径 java字符串 java8特性 java获取月份 java初学 java时间类 java版本查看 java文件复制 linux云服务器 方正流行体 高效能人士的七个习惯pdf exescope教程 机械下载 vnc客户端 图片生成网址 微信临时链接多久失效 俄罗斯方块代码 arm体系结构与编程 pr动态字幕 发射爱心的图片 c语言幂函数 深入解析windows操作系统 鼠标速度怎么调 苹果手机怎么看内存 x270 浣海之核 ps怎么去痘痘 mysql退出命令
当前位置: 首页 > 学习教程  > 编程语言

【安卓开发系列 -- APP 开源框架】网络请求框架 OKHTTP -- 整体框架

2020/11/4 14:27:41 文章标签:

【安卓开发系列 -- APP 开源框架】网络请求框架 OKHTTP -- 整体框架 【1】OKHTTP 简介 OkHttp是一个适用于Android端处理网络请求的开源框架,由Square公司开发用于替代HttpUrlConnection和Apache HttpClient; 其特点如下, 1. 支持HTTPS/HTT…

【安卓开发系列 -- APP 开源框架】网络请求框架 OKHTTP -- 整体框架

【1】OKHTTP 简介

OkHttp是一个适用于Android端处理网络请求的开源框架,由Square公司开发用于替代HttpUrlConnection和Apache HttpClient;
其特点如下,
1. 支持HTTPS/HTTP2/WebSocket
2. 内部维护任务队列线程池支持并发访问
3. 内部维护连接池,支持多路复用,减少连接创建开销
4. socket创建支持最佳路由
5. 提供拦截器链(InterceptorChain),实现request与response的分层处理;

【2】OKHTTP 整体框架结构图示

OkHttp的整体架构大致可以分为如下的层次

1. Interface(接口层),接受网络访问请求;

接口层接收用户的网络访问请求(同步请求/异步请求)并发起实际的网络访问;OkHttpClient是OkHttp框架的客户端,用户使用OkHttp进行各种设置,通过OkHttpClient发起各种网络请求;每个OkHttpClient内部都维护了属于自己的任务队列,连接池,Cache,拦截器等;
Call描述一个实际的访问请求,用户的每一个网络请求都是一个Call实例;Call本身只是一个接口,定义了Call的接口方法,实际执行过程中,OkHttp会为每一个请求创建一个RealCall,每一个RealCall内部有一个AsyncCall;
Dispatcher是OkHttp的任务队列,其内部维护了一个线程池,当有接收到一个Call时,Dispatcher负责在线程池中找到空闲的线程并执行其execute方法;

2. Protocol(协议层),处理协议逻辑;

Protocol层负责处理协议逻辑,OkHttp支持Http1/Http2/WebSocket协议;

3. Connection(连接层),管理网络连接,发送新的请求,接收服务器访问;

连接层负责处理网络连接,在连接层中有一个连接池,统一管理所有的Socket连接,当用户新发起一个网络请求时,OkHttp会首先从连接池中查找是否有符合要求的连接,如果有则直接通过该连接发送网络请求;否则新创建一个网络连接;

4. Cache(缓存层),管理本地缓存;

Cache层负责维护请求缓存,当用户的网络请求在本地已有符合要求的缓存时,OkHttp会直接从缓存中返回结果,从而节省网络开销;

5. I/O(I/O层),实际数据读写实现;

I/O层负责实际的数据读写,OkHttp其底层采用I/O库OKIO其I/O操作高效;

6. Inteceptor(拦截器层),拦截网络访问,插入拦截逻辑;

拦截器层提供了一个类AOP接口,方便用户可以切入到各个层面对网络访问进行拦截并执行相关逻辑;

参考致谢
本博客为博主的学习实践总结,并参考了众多博主的博文,在此表示感谢,博主若有不足之处,请批评指正。

【1】OkHttp 3.7源码分析(一)——整体架构

【2】OkHttp源码--整体架构


本文链接: http://www.dtmao.cc/news_show_350139.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?