网络请求横向比较
网络请求(单一职责原则Volley、OkHttp、Retrofit、android-async-http作者不再维护,因为它所基于的android自带的httpclient被废弃)(图片加载,数据存储,View 注解)
OKHTTP和javaapi里的HttpUrlConnection使用类似,具体使用方法几行代码可以在官网查询,也可以继续在此基础上封装。下面一句话简述okhttp的使用:
而volley是google出的一套小巧的库,支持httpclient,httpurlconnection甚至okhttp,设计初衷是为小量而频繁的请求而生。下面也用一句话来简述volley的使用
volley之所以这么屌,离不开它的缓存机制,每个请求算作一个task的话,它会将高频次的task存在缓存中。每次请求先从缓存中查找,失败了才继续网络请求
Retrofit也是square公司基于okhttp封装的一套RESTful网络请求框架,REST是client和server之间的一种交互形式而已本身不实用,设计RESTful风格的api才厉害。这东西理解起来费劲,贴两句话简单感受一下吧。REST架构中,url用名词来指定资源而不是动词,资源是网络核心是用动词来实现资源的状态扭转,如:
DELETE http://api.qc.com/v1/friends: 删除某人的好友 (在http parameter指定好友id)
POST http://api.qc.com/v1/friends: 添加好友
叽叽歪歪这么多,项目中怎么选型,根据下面的原则来参考:
okhttp VS volley:okhttp基于nio,不阻塞,采用回调形式执行线程。性能更优秀
所以如果轻量级的请求,建议用volley,它甚至能load一些简单的图片,而如果需要post大数据,则使用okhttp
nio的不阻塞,我也贴个图感受一下