Android常用的网络框架有:volley 、Android-async-http、Afinal、xUtils、okhttp、retrofit等
一、volley
github地址:https://github.com/mcxiaoke/android-volley
优点:
1、默认 android2.3及以上基于HttpURLConection,2.3以下基于HttpClient
2、符合Http缓存语义的缓存机制(提供了默认的磁盘和内存等缓存)
3、请求队列的优先级顺序
4、提供多样的取消机制
5、提供简便的图片加载工具
缺点:不支持大文件的下载
二、Android-async-http(已停止更新)
github地址:https://github.com/loopj/android-async-http
优点:
1、在匿名回掉中处理请求结果
2、在UI线程外进行http请求
3、文件断点上传
4、智能重试
5、默认gzip压缩
6、支持解析成json格式
7、可将Cookies持久化到SharedPreference
三、Afinal
github地址:https://github.com/yangfuhai/afinal
1、数据库模块:android中的orm框架,使用了线程池(解决操作数据库时的耗时问题)对sqlite进行操作
2、注解模块:android中的ioc框架,完全注解方式就可以进行UI绑定和事件绑定,无需findViewById和setOnclickListener
3、网络模块:通过httpclienet进行封装http数据请求,支持ajax方式加载,支持下载、上传文件功能
4、图片缓存模块:通过FinalBitmap,imageView加载bitmap的时候无需考虑bitmap加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象。
四、xUtils停止更新(和Afinal相似)
gitHub地址:https://github.com/wyouflf/xutils
五、Okhttp(后面详解)
github地址:https://github.com/square/okhttp
六、retrofit
github地址:https://github.com/square/retrofit
优点:
1、支持okhttp
2、处理注解,简化代码
3、支持上传和下载文件
4、支持自己的更换解析方式
5、支持多种http请求库
七、选择学习一个框架的依据
学习成本有多大、文档是否齐全、Github星数量、是否有人在维护、流行程度、代码设计是否有借鉴性、使用一个框架是否对代码体积的影响。