OKHttp 的特点
1.相较于 Volley,它的最大并发量为 64
2.使用连接池技术,支持 5 个并发的 socket 连接默认 keepAlive 时间为 5 分钟,解决 TCP 握手和挥手 的效率问题,减少握手次数
3.支持 Gzip 压缩,且操作对用户透明,可以通过 header 设置,在发起请求的时候自动加入 header,Accept-Encoding: gzip,而我们的服务器返回的时候 header中有 Content-Encoding: gzip
4.利用响应缓存来避免重复的网络请求
5.很方便的添加拦截器,通常情况下,拦截器用来添加,移除,转换请求和响应的头部信息,比如添加公参等
6.请求失败,自动重连,发生异常时重连,看源码调用 recover 方法重连了一次
7.支持 SPDY 协议(SPDY 是 Google 开发的基于 TCP 的应用层协议,用以最小化网 络延迟,提升网络速度,优化用户的网络使用体验。SPDY 并不是一种用于替代 HTTP 的协议,而是对 HTTP 协议的增强。新协议的功能包括数据流的多路复用、 请求优先级以及 HTTP 报头压缩。谷歌表示,引入 SPDY 协议后,在实验室测试 中页面加载速度比原先快 64%)
8.使用 Okio 来简化数据的访问与存储,提高性能
OkHttp 的缺点
1.消息回来需要切到主线程,主线程要自己去写。
2.调用比较复杂,需要自己进行封装。
3.缓存失效:网络请求时一般都会获取手机的一些硬件或网络信息,比如使用的 网络环境。同时为了信息传输的安全性,可能还会对请求进行加密。在这些情况 下 OkHttp 的缓存系统就会失效了,导致用户在无网络情况下不能访问缓存。
OkHttp 框架中用到了哪些设计模式
1.最明显的 Builder 设计模式,如构建对象 OkHttpClient,还有单例模式
2.工厂方法模式,如源码中的接口 Call
3.观察者模式,如 EventListener,监听请求和响应
4.策略模式
5.责任链模式,如拦截器