继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

项目中该如何选择网络框架?

繁花不似锦
关注TA
已关注
手记 348
粉丝 50
获赞 241

最近我们天府之国天气有点傲娇,先看看今天的天气:


局部有雨,各位小伙伴,记得带伞!

看到标题,小伙伴是不是想到了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从使用上或效率上,它都更胜一筹;

但是从我们实际的工作中出发:

有时候需要快速开发;

有时候后台不能准确的配合你;

有时候遇到坑不知道如何解决;

......

这个时候我们可能就要考虑,哪个才是最适合我的,最适合项目的。

总的来说,网络请求库没有说哪个最好,只有最合适,只有真的了解其使用场景才能很好的选择网络请求库!

小伙伴们,你们觉得呢?

原文链接:http://www.apkbus.com/blog-918160-78373.html

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP