Android网络框架综述(一)OkHttp、NoHttp、Volley

首先:总体来看OkHttp和NoHttp、Volley不是一个层面的框架,直接比较有些不妥。下面分别简述:


1、Okhttp和HttpClient、HttpURLConnection或Apache的HttpClient是同等级别的,他们是网络客户端,不仅Android能用,java也能用,所以在Android中想要用要进行封装以提供简单的API使用。

OKHttp非常高效,支持SPDY、连接池、GZIP和 HTTP 缓存。默认情况下,OKHttp会自动处理常见的网络问题,像二次连接、SSL的握手问题。从Android4.4开始HttpURLConnection的底层实现采用的是okHttp.


2、Volley是Google基于HttpClient + HttpURLConnection来封装的,针对短、频、快的网络请求推出的一款框架。Volley可是说是把AsyncHttpClient和Universal-Image-Loader的优点集于了一身,既可以像AsyncHttpClient一样非常简单地进行HTTP通信,也可以像Universal-Image-Loader一样轻松加载网络上的图片。除了简单易用之外,Volley在性能方面也进行了大幅度的调整,它的设计目标就是非常适合去进行数据量不大,但通信频繁的网络操作,而对于大数据量的网络操作,比如说下载文件等,Volley的表现就会非常糟糕


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是首选,花点时间找一个封装好的框架或者自己封装一下想要的功能就可以了。


附:OkHttp封装比较好的两个框架   在app的build.gradle文件的dependencies中加入引用即可

(1)compile 'com.zhy:okhttputils:2.6.1'
或者OkHttp母公司出品的Retrofit

(2)compile 'com.squareup.retrofit2:retrofit:2.1.0'

你可能感兴趣的:(Android,总结类)