网络请求框架:OkHttp:框架解析

Okhttp网络框架解析

1:请求参数通过构造器模式构建

2:支持同步/异步请求

3:响应Response通过责任链模式处理不同结果

4:使用 DiskCacshe来缓存

Okhttp3 总结研究 (面试)_茶卡y的专栏-CSDN博客_okhttp面试

> 网络框架 OkHttp 拦截器
Interceptor 是 OkHttp 最核心的一个东西,不要误以为它只负责拦截请求进行一些额外的处理(例如 cookie),实际上它把实际的网络请求、缓存、透明压缩等功能都统一了起来,每一个功能都只是一个 Interceptor,它们再连接成一个 Interceptor.Chain,环环相扣,最终圆满完成一次网络请求。
 责任链拦截器Interceptor:
RetryAndFollowUpInterceptor:负责失败重试以及重定向;
BridgeInterceptor:负责把用户构造的请求转换为发送到服务器的请求、把服务器返回的响应转换为用户友好的响应的;
ConnectInterceptor:建立连接;
NetworkInterceptors:配置OkHttpClient时设置的 NetworkInterceptors;
CallServerInterceptor:发送和接收数据;
  Http请求行:由请求方法,URL,协议版本三部分构成,之间用空格隔开;请求方法包括:POST、GET、HEAD、PUT、POST、TRACE、OPTIONS、DELETE等;

-- Okhttp使用了DiskLruCache(DiskLruCache->LinkedHashMap)来缓存

缓存,顾名思义,也就是方便用户快速的获取值的一种储存方式。小到与CPU同频的昂贵的缓存颗粒,内存,硬盘,网络,CDN反代缓存,DNS递归查询,OS页面置换,Redis数据库,都可以看作缓存。它有如下的特点:

  1. 缓存载体与持久载体总是相对的,容量远远小于持久容量,成本高于持久容量,速度高于持久容量。比如硬盘与网络,目前主流的SSD硬盘可以达到500MB/S,而很多地区网速却只有4M,将网络中的文件存到硬盘中,硬盘就相当于缓存;再比如内存与硬盘,主流的DDR3内存的速度可以达到10GB/S,而硬盘相对的慢了很多数量级别,将硬盘的游戏加载到内存,内存就相对于硬盘是一种缓存。
  2. 需要实现排序依据,在java中,可以使用Comparable<T>作为排序的的接口
  3. 需要一种页面置换算法(page replacement algorithm)将旧页面去掉换成新的页面,如最久未使用算法(LFU)、先进先出算法(FIFO)、最近最少使用算法(LFU)、非最近使用算法(NMRU)、LRU(最近最少使用算法)等
  4. 如果没有命中缓存,就需要从原始地址获取,这个步骤叫做“回源”,CDN厂商会标注“回源率”作为卖点

在OkHttp中,使用FileSystem作为缓存载体(磁盘相对于网络的缓存),使用LRU作为页面置换算法(封装了LinkedHashMap)。LruCache(在API 4之前可以使用Support Library 中的类 )特别适合缓存Bitmap, 把最近使用到的 Bitmap对象用强引用保存起来(保存到LinkedHashMap中),当缓存数量达到预定的值的时候,把不经常使用的对象删除。

OkHttp3源码分析[DiskLruCache]_专注Android开发-CSDN博客OkHttp系列文章如下OkHttp3源码分析[综述]OkHttp3源码分析[复用连接池]OkHttp3源码分析[缓存策略]OkHttp3源码分析[DiskLruCache]OkHttp3源码分析[任务队列]本文目录:Cache的简介LinkedHashMap原理OkHttp的文件系统本文主要是对put/get过程进行分析,注意缓存的判断依据不是本文,而是缓存策略https://blog.csdn.net/yangxi_pekin/article/details/73459961

OkHttp拥有2种运行方式一种是同步阻塞调用并直接返回的形式,另一种是通过内部线程池分发调度实现非阻塞的异步回调。下面我们来看看 Okhttp第二章运行方式:通过线程池分发调度实现非阻塞异步回调

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值