美文网首页我的Android武功秘籍
Android的网络请求库选择

Android的网络请求库选择

作者: 白银之火 | 来源:发表于2017-02-09 14:14 被阅读325次

    看了知乎上的一个回答

    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的网络请求库选择

        本文链接:https://www.haomeiwen.com/subject/rmzbpttx.html