美文网首页Android
Android网络框架对比

Android网络框架对比

作者: momxmo | 来源:发表于2020-07-28 18:40 被阅读0次

一、目的:

对比现在主流网络框架的优势和缺点,在实际项目中如何选择适合自己的框架;

现在基本已经是Okhttp+retrofit结合使用的天下,他们的优势也是很明显的,Google已经在Android4.4之后将HttpUrlConnection已经替换了OkHttp

主流框架分类

底层网络框架:HttpClient、HTTPURLConnection、OkHttp都属于底层网络框架,是真正发起http请求的;
封装的网络框架:Volley、Retrofit、Okgo、Novate属于对底层网络框架的封装,比如Volley内部使用的就是HttpURLConnection、HttpClient、OkHttp,Retrofit是基于OkHttp的封装

发展史

Android2.2之前HttpClient是最佳选择,Android2.3之后Google官方建议使用HttpURLConnection,Android6.0以后Google官方Api移除HttpClient

简单对比
框架 okhttp retrofit volley android-async-http
作者 square公司 square公司 Google Google
性能 拥有Nio和Okio,所以性能更高,请求、处理速度更快(io:阻塞式 nio:非阻塞式) 代码简化,结构彻底,职责细分;易于和rxjava使用,使用方法较多,原理复杂 可拓展性好,可支持httpClient、HTTPURLConnection、okhttp android5.0之后已弃用
特点 ①高性能http请求库,使用连接池来复用连接以提供效率;
②支持SPDY,共享同一个Socket来处理同一个服务器所有的请求;
③支持http2.0、Websocket;
④支持同步、异步执行
⑤封装线程池、数据转换、参数使用、错误处理等;
⑥无缝支持Gzip来减少数据流量;
⑦缓存响应数据来减少重复的网络请求
⑧能从很多常用的连接问题中自动恢复
⑨解决了代理服务器问题和SSL握手失败问题

①Resrful api设计风格
②支持同步、异步
③通过注解配置请求,包括请求方法、参数、请求头、返回值等
⑤可以搭配多种Converter将获得数据解析&序列化
⑥支持Gson(默认)、Jsckson、Protobuf等
⑦提供Rxjava支持

①基于HttpUrlConnection,封装了UIL图片加载框架,支持图片加载
②网络请求的排序、优先级处理缓存;
③多级别取消请求
④Activity和生命周期的联动(Activity结束生命周期同时取消所有网络请求)

①基于HttpClient
②在UI线程外、异步进行http请求
③在匿名回调中处理请求结果,callback使用了Andorid的Handler发送消息机制在创建它的线程中执行
④自动智能请求重试机制
⑤持久化cookie存储,保存cookit到应用程序的SharedPreferences
- - - - -
适用场景 重量级网络交互场景:网络请求频繁,传输数据量大 - 适合轻量级网络交互:网络请求频繁,传输数据量小
不能进行大数据的网络操作,比如音频文件的下载传输
原因:Volley的Request和Response都是把数据放在byte数组中,不支持输入输出流,把数据放在数组中,如果文件大,数组就会很大,需要消耗很大的内存
-
缺点 ------ ------ 致命缺点:不能下载大数据文件 已停止维护

常见问题:

问题一:Android6.0以后Google官方Api移除HttpClient,继续使用HttpClient及基于其封装的网络库会出异常

解决:build.gradle 文件中声明以下编译时依赖项:
官方说明:https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html

android {
useLibrary ‘org.apache.http.legacy’
}

相关文章

网友评论

    本文标题:Android网络框架对比

    本文链接:https://www.haomeiwen.com/subject/gjrmlktx.html