上篇我们谈了谈图片的加载相关的库,在开发中我们少不了请求网络, 主要用到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
缺点:
下图是它的工作原理图
它的设计目标就是非常适合去进行数据量不大,但通信频繁的网络操作,如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的情况下没有特别明显的优化
工作原理图
项目地址:https://github.com/square/okhttp
Retrofit
Square 开源RESTFUL API库, Retrofit的跟Volley是一个套路,但解耦的更彻底。同时自己内部对OkHtttp客户端做了封装, 用Retrofit+OkHttp基本上已经可以处理任何业务场景了。
特点:
简化了网络请求流程,支持注解请求
支持多种Converter、还可以自定义, 如:Gson、Jackson、protobuf、xml
可以配合RxJava使用
缺点:
看不出缺点是最大的缺点
下面的工作原理图是网友Stay的作品,如下:
项目地址: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常用的开源项目及比较-图片加载篇