Android网络框架对比

网络请求库\对比 android-async-http volley okhttp retrofit
功能 基于HttpClient; 在UI线程外、异步进行Http请求;在匿名回调中处理请求结果,callback使用了Android的Handler发送消息机制在创建它的线程中执行;自动智能请求重试 ;持久化cookie存储,保存cookie到应用程序的SharedPreferences 基于HttpUrlConnection;封装了UIL图片加载框架,支持图片加载;网络请求的排序、优先级处理缓存;多级别取消请求;Activity和生命周期的联动(Activity结束生命周期同时取消所有网络请求) 高性能Http请求库;可以把它理解成是一个封装之后类似HttpUrlConnection的一个东西,属于同级别并不是基于前者;支持SPDY,共享同一个Socket来处理同一个服务器所有的请求;支持http2.0、websocket;支持同步、异步;封装了线程池、数据转换、参数使用、错误处理等;无缝的支持GZIP来减少数据流量;缓存响应数据来减少重复的网络请求;能从很多常用的连接问题中自动恢复;解决了代理服务器问题和SSL握手失败问题 RESRful Api设计风格;支持同步、异步;通过注解配置请求;包括请求方法、请求参数、请求头、返回值等;可以搭配多种Converter将获得的数据解析&序列化;支持Gson(默认)、Jackson、Protobuf等;提供对RxJava的支持
性能 停止维护;android5.0之后不推荐用HttpClient 可拓展性好;可支持HttpClient、httpUrlConnection、和okhttp 基于NIO和OKio,所以性能更高,请求、处理速度快(io:阻塞式;NIO:非阻塞式;); 简单易用;代码简化;解耦彻底,职责细分;易与和rxjava使用;使用方法较多,原理复杂,
开发者使用 封装行好,简单易用 api调用简单方便;使用需要多封装一层 简单易用;代码简化;解耦彻底,职责细分;易与和rxjava使用;使用方法较多,原理复杂,
应用场景 适合轻量级网络交互:网络请求频繁,传输数据量小;不能进行大数据量的网络操作,比如音频下载文件传输 重量级网络交互场景:网络请求频繁,传输数据量大
备注 Volley的request和response都是把数据放到byte数组里,不支持输入输出流,把数据放到数组中,如果文件多了,数组就会大,消耗内存 Android4.4源码中,HttpUrlConnection已经替换成OkHttp

你可能感兴趣的:(面试)