Android常用框架----网络请求系列框架

来源:互联网 发布:网络直播评论性文章 编辑:程序博客网 时间:2024/06/05 07:35
趁着这段时间不忙,放下工作,静下心来对Android中常用的第三方框架进行了剖析并整理,接下来从网络请求框架开始。

常用网络请求框架对比:

1.okhttp

okhttp和HttpClient、HttpURLConnection或Apache的HttpClient是同等级别的,他们是网络客户端,不仅Android能用,Java也能用,所以在android中想要用要进行封装以提供简单的API使用。Square 公司开源的 okHttp 是一个专注于连接效率的 HTTP 客户端。okHttp 提供了对 HTTP/2 和 SPDY 的支持,并提供了连接池,GZIP 压缩和 HTTP 响应缓存功能。默认情况下,okHttp会自动处理常见的网络问题,像二次连接、SSL的握手问题。从Android4.4开始HttpURLConnection的底层实现采用的是okHttp.okHttp,okHttpUtils,Retrofit(三者都是基于okhttp实现的,okHttpUtils是鸿洋大神对okhttp的封装,Retrofit是OkHttp母公司出品的)

优点

支持http请求,https请求。支持文件下载。使用的是HttpURLConnection,不要担心android版本的变换。(至少目前是都支持的)。支持get,post请求。基于Http的文件上传。加载图片。

缺点

比如callback回来是在线程里面, 不能刷新UI,需要我们手动处理。封装比较麻烦。

2、Volley

   是Google在2013年Google I/O大会上基于HttpClient + HttpURLConnection来封装的,针对短、频、快的网络请求推出的一款新的网络通信框架,开源的。Volley可是说是把AsyncHttpClient和Universal-Image-Loader的优点集于了一身,既可以像AsyncHttpClient一样非常简单地进行HTTP通信,也可以像Universal-Image-Loader一样轻松加载网络上的图片。Volley 的特点:特别适合数据量小,通信频繁的网络操作。

优点

非常适合进行数据量不大,但通信频繁的网络操作。内部分装了异步线程。支持get,post网络请求。图片下载。可直接在主线程调用服务端并处理返回结果。可以取消请求,容易扩展,面向接口编程。

缺点

对大文件下载 Volley的表现非常糟糕。只支持http请求。图片加载性能一般。使用的是httpclient,HttpURLConnection。不过在android 6.0不支持httpclient了,如果想支持得添加org.apache.http.legacy.jar。

使用方法:

1. 创建一个RequestQueue对象。2. 创建一个StringRequest对象。3. 将StringRequest对象添加到RequestQueue里面。
RequestQueue mQueue = Volley.newRequestQueue(context);  StringRequest stringRequest = new StringRequest("http://www.baidu.com",                          new Response.Listener<String>() {                              @Override                              public void onResponse(String response) {                                  Log.d("TAG", response);                              }                          }, new Response.ErrorListener() {                              @Override                              public void onErrorResponse(VolleyError error) {                                  Log.e("TAG", error.getMessage(), error);                              }                          }); mQueue.add(stringRequest); 

详细使用参考鸿洋的博客:http://blog.csdn.net/guolin_blog/article/details/17482095/


3、NoHttp

是基于HttpURLConnection来封装的,它的优势在于封装的功能强大,性能也可以。简述如下:(1)支持HTTP/HTTPS,自动维持Cookie,异步/同步请求,大文件/多文件上传,文件下载,断点续传。(2)支持304缓存,302/303重定向,支持通过代理服务器访问地址。(3)NoHttp是队列,自动为请求排队,可以取消指定请求,可以取消队列所有请求,亦可以停止队列。(4)支持请求String、Bitmap、JsonObject、可自定义扩展请求类型(demo中的FastJsonRequest等)(5)API使用简单,Request对象包涵参数、文件、请求头等;Response对象包涵响应内容, 响应头等信息。

总结:

(1)如果你的应用场景是频繁短暂的网络交互不涉及大文件的上传、下载 Volley足可以满足需求,apk的升级下载要自行封装一下;(2)如果你想更省事、更简单的开发可以使用NoHttp,不过NoHttp是个人开发的,后期的维护升级是有风险的;(3)如果想要稳定并且高效的一款网络框架,OkHttp是首选,花点时间找一个封装好的框架或者自己封装一下想要的功能就可以了。

4、xUtils(跟Afinal是同类型的框架, 现在作者已经两三年前就没有进行更新了)

xUtils 包含了很多实用的android工具。xUtils 源于Afinal框架,对Afinal进行了大量重构,使得xUtils支持大文件上传,更全面的http请求协议支持,拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响。同时需要注意的是,xUitls最低兼容android 2.2 (api level 8)  。一、ViewUtils@ViewInject、@OnClick,就能轻松摆脱findViewById找控件,各种监听事件的绑定。二、HttpUtils支持的HTTP七种请求方式,非常便捷的满足你的接口请求的需要。同时还支持大文件上传下载,以及同步异步请求。三、BitmapUtils摆脱了程序因OOM强制关闭和加在网络图片的问题。四、DbUtils简单易用又出色的ORM(对象关系映射:Object-Relational Mapping)框架,直接轻松存储各种对象到sqlite数据库中,同时也能非常方便的进行各种条件查询,甚至分页查询,还有对表中数据的更新删除等操作,真正的实现。一行代码就可以进行增删改查。并且可通过注解自定义表名,列名,外键,唯一性约束,NOT NULL约束,CHECK约束等,支持事务。

官网的简介:
xUtils3 api 变化较多, 已转至 https://github.com/wyouflf/xUtils3
xUtils 2.x 对 Android 6.0兼容不是很好, 请尽快升级至 xUtils3.
xUtils 包含了很多实用的android工具。
xUtils 支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的 ORM,更多的事件注解支持且不受混淆影响…
xUitls 最低兼容android 2.2 (api level 8)
官网或相关地址:
Afinal框架 的 github 地址:https://github.com/wyouflf/xUtils
注:这个框架的作者已经停止更新了,因此现在就不推荐使用了


5、Afinal框架

Afinal 是一个 android 的 sqlite orm 和 ioc 框架。同时封装了android中的http框架,使其更加简单易用;使用 finalBitmap,无需考虑 bitmap 在 android 中加载的时候 oom 的问题和快速滑动的时候图片加载位置错位等问题。Afinal的宗旨是简洁,快速。约定大于配置的方式。尽量一行代码完成所有事情。Afinal主要是分四个模块: (1) 数据库模块:android 中的 orm 框架,使用了线程池对 sqlite 进行操作。 (2) 注解模块:android 中的 ioc 框架,完全注解方式就可以进行UI绑定和事件绑定。无需 findViewById 和 setClickListener 等。其实它后面是使用反射来进行初始化的。 (3) 网络模块:通过 httpclient 进行封装 http 数据请求,支持 ajax方式加载,支持下载、上传文件功能。 (4) 图片缓存模块:通过 FinalBitmap,imageview 加载 bitmap 的时候无需考虑 bitmap 加载过程中出现的 oom 和 android 容器快速滑动时候出现的图片错位等现象。

官网或相关地址:
Afinal框架 的 github 地址:https://github.com/yangfuhai/afinal
注:这个框架的作者已经停止更新了,因此现在就不推荐使用了


以上是常用的网络框架,项目中比较熟悉和常使用的框架:基于okHttp封装库的okhttputils框架(详细使用参考网络请求框架(二)—-改善的okHttp封装库okhttputils的使用 )和volley框架。

原创粉丝点击