7.网络框架

概念

retrofit、android-async-http、volley,帮你封装了具体的请求,线程切换以及数据转换。
OkHttp 是基于http协议封装的一套请求客户端,虽然它也可以开线程,但根本上它更偏向真正的请求,跟HttpClient, HttpUrlConnection的职责是一样的。

1. android-async-http

android-async-http内部实现是基于HttpClient, 想必你肯定知道6.0之后HttpClient是不是系统自带的了,所以这个库已经不适合android平台了。

2. Volley

Volley是官方出的,volley在设计的时候是将具体的请求客户端做了下 封装:HurlStack,也就是说可以支持HttpUrlConnection, HttpClient, OkHttp,相当于模版模式吧,这样解耦还是非常方便的,可以随意切换,如果你之前使用过Volley,并习惯使用,那直接写个OkHttp扩展就行了。
缺点:是不支持同步,这点会限制开发模式;不能post大数据,所以不适合用来上传文件。

3. Retrofit

  1. 基于okhttp,特点是简化了网络请求流程,清晰简单的接口
  2. 同时自己内部对OkHtttp客户端做了封装,同时2.x把之前1.x版本的部分不恰当职责都转移给OkHttp了(例如Log,目前用OkHttp的Interceptor来实现),这样的好处是职责清晰,Retrofit做自己该做的事儿。
  3. 而且Retrofit提供不同的Json Converter实现(json, protobuff, xml, moshi等),同时提供RxJava支持(返回Observable对象),配合Jackson(或者Gson)和RxJava,再加上Dagger2,你的效率至少可以提高一倍
  4. okhttp是高性能的http库,支持同步、异步,而且实现了spdy、http2、websocket协议,api很简洁易用,和volley一样实现了http协议的缓存。picasso就是利用okhttp的缓存机制实现其文件缓存,实现的很优雅,很正确,反例就是UIL(universal image loader),自己做的文件缓存,而且不遵守http缓存机制。

4.Okhttp

内部开启一个Socket链接,所有请求共享同一个Socket,目的是为了减少链接时间,并且维护有一个连接池;同时对传输数据进行GZIP压缩,并且对网络数据有缓存机制
OKHttp源码解析
OKHttp源码浅析与最佳实践

7.网络框架_第1张图片
Paste_Image.png

你可能感兴趣的:(7.网络框架)