最近我们天府之国天气有点傲娇,先看看今天的天气:
局部有雨,各位小伙伴,记得带伞!
看到标题,小伙伴是不是想到了okhttp,Retrofit以及Goolgle的Volley等;
那么我们在新开始一个项目的时候,该如何去选择这些框架?
又或者我们自己去封装一个网络请求框架;
下面我们就来聊聊:
看下面图片:
· httpclient :6.0中已移除,其封装库async-http也早已停止更新;
· httpurlconnection :sdk提供的网络类,我们可以用它结合asynctask封装自己的简单的网络库;
· android-async-http:已经停止更新;
Volley:
(1)、基于HttpUrlConnection,封装了URL图片加载框架,支持图片加载,Activity和生命周期可以联动;
(2)、可扩展性好,可支持HttpClient、HttpUrlConnection和Okhttp;
(3)、适合轻量级网络交互,网络请求频繁,传输数据量小;
(4)、不适合大数据的网络操作(比如下载视频、音频),所以不适合用来上传文件;
Okhttp:
(1)、高性能Http请求库,可把它理解成是一个封装之后的类似HttpUrlConnection的一个东西,属于同级并不是基于二者,可以理解成为Socket(原生)+OkIo(IO的封装);
(2)、基于NIO和Okio,所以性能比较好,请求处理速度快(IO:阻塞式;NIO:非阻塞式;Okio是Square公司基于IO和NIO做的一个更简单、高效处理数据流的一个库);
(3)、重量级网络交互场景,网络请求频繁、传输数据量大(当然更推荐Retrofit,反正Retrofit是基于Okhttp的);
Retrofit:
(1)、基于Okhttp,restful Api设计风格,可通过注解配置请求包括请求方法,请求参数,请求头返回值等等;
(2)、可以搭配多种Converter将获得的数据解析&序列化,其实就是 OkHttp 的封装版本,还提供对RxJava的支持;
(3)、性能最好处理最快,因为是基于Okhttp封装所以扩展性差,这其实是高度封装所带来的后果;
(4)、可以优先选择,特别是后台Api遵循restful的风格&项目中有使用RxJava;
Volley停止了更新,而OkHttp得到了官方的认可,并在不断优化;
至此,我们是不是得出结论,直接选用Retrofit2.0+OkHttp3呢?
咱接着往下说:
每个项目都有各自的需求,可能Retrofit2.0+OkHttp3从使用上或效率上,它都更胜一筹;
但是从我们实际的工作中出发:
有时候需要快速开发;
有时候后台不能准确的配合你;
有时候遇到坑不知道如何解决;
......
这个时候我们可能就要考虑,哪个才是最适合我的,最适合项目的。
总的来说,网络请求库没有说哪个最好,只有最合适,只有真的了解其使用场景才能很好的选择网络请求库!
小伙伴们,你们觉得呢?