Android 开发中常用的开源项目及比较 - 网络篇

上篇我们谈了谈图片的加载相关的库,在开发中我们少不了请求网络, 主要用到http协议这篇我们继续这个系列,说说开发中我们常用的和网络相关的开源框架有哪些。首先我们去Github上看看排在前几位的和网络相关框架。

通过上图是通过star排序的结果,我们可以发现它们就是Retrofit、okhttp、android-async-http、xUtils。由于xUtils公共的库它不是只支持http,还支持orm、bitmap、view注解,本着专一原则我们项目中就不会选择xUtils, 这里我们就不介绍它了。
下面我们就分别说说Retrofit、okhttp、android-async-http、还要volley。

Volley

Google提供网络通信库,在2013年Google I/O大会上推出了一个新的网络通信框架,官方是这样说的:

Easy, Fast Networking for Android

特点:

  • 自动调度网络请求

  • 多线程并发网络连接、请求优先级

  • 请求Cache和内存管理

  • 扩展性强 如:支持自定义重连等

  • 支持请求取消

  • 强大的Debug、tracing

缺点:

下图是它的工作原理图
《Android 开发中常用的开源项目及比较 - 网络篇》
它的设计目标就是非常适合去进行数据量不大,但通信频繁的网络操作,如list加载等等
项目地址:https://android.googlesource.com/platform/frameworks/volley
技术文档:http://commondatastorage.googleapis.com/io-2013/presentations/110%20-%20Volley-%20Easy,%20Fast%20Networking%20for%20Android.pdf

okhttp

square 开源的 http协议 工具类,Android系统API 19以后HttpURLConnection内部实现就是使用了okhttp
特点:

  • 支持Http/2,Http/2主要支持 SPDY( http://zh.wikipedia.org/wiki/SPDY )协议。SPDY 协议是 Google 开发的基于传输控制协议的应用层协议,通过压缩,多路复用(一个 TCP 链接传送网页和图片等资源)和优先级来缩短加载时间。

  • 如果 Http/2 不可用,利用连接池减少请求延迟

  • Gzip 压缩

  • Response 缓存减少不必要的请求

  • 支持请求取消

缺点:
在服务器不支持speedy的情况下没有特别明显的优化

工作原理图
《Android 开发中常用的开源项目及比较 - 网络篇》
项目地址:https://github.com/square/okhttp

Retrofit

Square 开源RESTFUL API库, Retrofit的跟Volley是一个套路,但解耦的更彻底。同时自己内部对OkHtttp客户端做了封装, 用Retrofit+OkHttp基本上已经可以处理任何业务场景了。
特点:

  • 简化了网络请求流程,支持注解请求

  • 支持多种Converter、还可以自定义, 如:Gson、Jackson、protobuf、xml

  • 可以配合RxJava使用

缺点:
看不出缺点是最大的缺点

下面的工作原理图是网友Stay的作品,如下:
《Android 开发中常用的开源项目及比较 - 网络篇》
项目地址:https://github.com/square/retrofit

android-async-http

由于HttpClient在Android API 23后就不能使用了, android-async-http内部实现了HttpClient。 这个库我也没有用过, 只是看过一些介绍,下面摘抄了一下官网的说明仅供参考

  • Make asynchronous HTTP requests, handle responses in anonymous callbacks

  • HTTP requests happen outside the UI thread

  • Requests use a threadpool to cap concurrent resource usage

  • GET/POST params builder (RequestParams)

  • Multipart file uploads with no additional third party libraries

  • Tiny size overhead to your application, only 60kb for everything

  • Automatic smart request retries optimized for spotty mobile connections

  • Automatic gzip response decoding support for super-fast requests

  • Optional built-in response parsing into JSON (JsonHttpResponseHandler)

  • Optional persistent cookie store, saves cookies into your app’s SharedPreferences

项目地址:https://github.com/loopj/android-async-http

总结

网络框架就介绍这么多吧, 以后还有合适的再做更新吧, 希望大家使用愉快!

相关文章:

Android常用的开源项目及比较-图片加载篇

    原文作者:HTTP
    原文地址: https://juejin.im/entry/58072dac0e3dd90057290f0f
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞