Android 开发中常用的开源项目及比较 - 网络篇
<p>由于xUtils公共的库它不是只支持http,还支持orm、bitmap、view注解,本着专一原则我们项目中就不会选择xUtils, 这里我们就不介绍它了。</p> <p>下面我们就分别说说Retrofit、okhttp、android-async-http、还要volley。</p> <h2><strong>Volley</strong></h2> <p>Google提供网络通信库,在2013年Google I/O大会上推出了一个新的网络通信框架,官方是这样说的:</p> <p>Easy, Fast Networking for Android</p> <p>特点:</p> <ul> <li> <p>自动调度网络请求</p> </li> <li> <p>多线程并发网络连接、请求优先级</p> </li> <li> <p>请求Cache和内存管理</p> </li> <li> <p>扩展性强 如:支持自定义重连等</p> </li> <li> <p>支持请求取消</p> </li> <li> <p>强大的Debug、tracing</p> </li> </ul> <p>缺点:</p> <ul> <li> <p>对于大数据量的网络操作糟糕, 如:下载文件等</p> </li> </ul> <p>下图是它的工作原理图</p> <p style="text-align: center;"><img src="https://simg.open-open.com/show/92ba9403304ce41e79caaa65cfea6fa2.jpg"></p> <p>它的设计目标就是非常适合去进行数据量不大,但通信频繁的网络操作,如list加载等等</p> <p>项目地址: https://android.googlesource.com/platform/frameworks/volley</p> <p>技术文档:</p> <p>http://commondatastorage.googleapis.com/io-2013/presentations/110%20-%20Volley-%20Easy,%20Fast%20Networking%20for%20Android.pdf</p> <h2><strong>okhttp</strong></h2> <p>square 开源的 http协议 工具类,Android系统API 19以后HttpURLConnection内部实现就是使用了okhttp</p> <p>特点:</p> <ul> <li> <p>支持Http/2,Http/2主要支持 SPDY( http://zh.wikipedia.org/wiki/SPDY )协议。SPDY 协议是 Google 开发的基于传输控制协议的应用层协议,通过压缩,多路复用(一个 TCP 链接传送网页和图片等资源)和优先级来缩短加载时间。</p> </li> <li> <p>如果 Http/2 不可用,利用连接池减少请求延迟</p> </li> <li> <p>Gzip 压缩</p> </li> <li> <p>Response 缓存减少不必要的请求</p> </li> <li> <p>支持请求取消</p> </li> </ul> <p>缺点:</p> <p>在服务器不支持speedy的情况下没有特别明显的优化</p> <p>工作原理图</p> <p style="text-align: center;"><img src="https://simg.open-open.com/show/32e4e6682c0a986b731c991d808175b6.jpg"></p> <p>项目地址:</p> <p>https://github.com/square/okhttp</p> <h2><strong>Retrofit</strong></h2> <p>Square 开源RESTFUL API库, Retrofit的跟Volley是一个套路,但解耦的更彻底。同时自己内部对OkHtttp客户端做了封装, 用Retrofit+OkHttp基本上已经可以处理任何业务场景了。</p> <p>特点:</p> <ul> <li> <p>简化了网络请求流程,支持注解请求</p> </li> <li> <p>支持多种Converter、还可以自定义, 如:Gson、Jackson、protobuf、xml</p> </li> <li> <p>可以配合RxJava使用</p> </li> </ul> <p>缺点:</p> <p>看不出缺点是最大的缺点</p> <p>下面的工作原理图是网友Stay的作品,如下:</p> <p style="text-align: center;"><img src="https://simg.open-open.com/show/5c62934844e145eadaf7753be282098f.jpg"></p> <p>项目地址:</p> <p>https://github.com/square/retrofit</p> <h2><strong>android-async-http</strong></h2> <p>由于HttpClient在Android API 23后就不能使用了, android-async-http内部实现了HttpClient。 这个库我也没有用过, 只是看过一些介绍,下面摘抄了一下官网的说明仅供参考</p> <ul> <li> <p>Make asynchronous HTTP requests, handle responses in anonymous callbacks</p> </li> <li> <p>HTTP requests happen outside the UI thread</p> </li> <li> <p>Requests use a threadpool to cap concurrent resource usage</p> </li> <li> <p>GET/POST params builder (RequestParams)</p> </li> <li> <p>Multipart file uploads with no additional third party libraries</p> </li> <li> <p>Tiny size overhead to your application, only 60kb for everything</p> </li> <li> <p>Automatic smart request retries optimized for spotty mobile connections</p> </li> <li> <p>Automatic gzip response decoding support for super-fast requests</p> </li> <li> <p>Optional built-in response parsing into JSON (JsonHttpResponseHandler)</p> </li> <li> <p>Optional persistent cookie store, saves cookies into your app’s SharedPreferences</p> </li> </ul> <p>项目地址: https://github.com/loopj/android-async-http</p> <h2><strong>总结</strong></h2> <p>网络框架就介绍这么多吧, 以后还有合适的再做更新吧, 希望大家使用愉快!</p> <p> </p> <p>来自:http://mp.weixin.qq.com/s?__biz=MzAwOTY0MTc3OA==&mid=2650253330&idx=1&sn=c3aa516fc915f82da78e81ee31f3502e#rd</p> <p> </p>
本文由用户 ChrHester 自行上传分享,仅供网友学习交流。所有权归原作者,若您的权利被侵害,请联系管理员。
转载本站原创文章,请注明出处,并保留原始链接、图片水印。
本站是一个以用户分享为主的开源技术平台,欢迎各类分享!