Android的网络请求库选择

Android的网络请求库选择_第1张图片

看了知乎上的一个回答

okhttp,retrofit,android-async-http,volley应该选择哪一个?

自己简单总结一下回答的内容


retrofit、okhttp:

retrofit是在okhttp基础上做的封装,应该放在一起。

OkHttp 是 Square 公司开源的针对 Java 和 Android 程序,封装的一个高性能 http 请求库。

它是基于http协议封装的一套请求客户端,虽然它也可以开线程,但根本上它更偏向真正的请求,跟HttpClient, HttpUrlConnection的职责是一样的。


android-async-http:

如果做过较久的项目,对这个网络请求库就不会陌生。国内很多小公司和项目使用的都是async-http,它使用简单、方便,上手十分容易。

但在这四种网络库的选择中,最不推荐的就是它,有几个主要原因:

async-http是封装的httpClient,而android平台不推荐用HttpClient了,因为在安卓6.0的SDK中,Google已经移除对HttpClient客户端的支持,使用HttpURLConnection类来代替。Android 6.0 变更

如果要继续使用async-http,必须手动添加org.apache.http.legacy.jar包

android-async-http 的作者已经不维护,因此整个相对其他网络库来说他已经太老了

async-http使用了nio的方式实现的。okhttp没有提供nio selector的方式,不过nio更适合大量连接的情况,对于移动平台有点杀鸡用牛刀的味道。


Volley:

Volley 是 Google 官方出的一套小而巧的异步请求库,该框架封装的扩展性很强,支持 HttpClient、HttpUrlConnection,甚至支持 OkHttp。

缺点是不支持同步,这点会限制开发模式。

另外Volley 的request和response都是把数据放到byte数组里,不支持输入输出流,我们下载一个大文件,不可能把整个文件都缓存到内存之后再写到文件里。所以不能post大数据,不适合用来上传文件。

而且 Volley 里面也封装了 ImageLoader ,所以如果你愿意你甚至不需要使用其他的图片加载框架,不过这块功能没有一些专门的图片加载框架强大,对于简单的需求可以使用,对于稍复杂点的需求还是需要用到专门的图片加载框架。

所以 Volley比较适合使用在网络请求较为频繁的、数据量小的项目中。


一句话总结:

Android的底层代码是使用okhttp,而retrofit底层代码也是okhttp,Volley连谷歌自己都不用,async-http则早已过时了。

你可能感兴趣的:(Android的网络请求库选择)