网络请求总结android
Anroid原生网络请求apache
HttpURLConnention: 谷歌原生提供的用于网络请求的轻量级方案,支持数据压缩;缺点是封装性差,使用起来麻烦,尤为是作multipart提交的时候须要本身拼接符合http协议的请求参数;另外HttpURLConnection在2.3版本如下有bug,具体是关闭流的时候会致使线程池的线程没法中止;2.3以上修复了该bug。
HttpClient: 谷歌原生内置的apache的HttpClient请求库,功能多样,缺点是API设计繁多,使用起来麻烦,随着OkHttp愈来愈流行,谷歌决定在android4.4之后的版本,废除HttpClient,并且HttpURLConnection的底层实现也采用的OkHttp;json
第三方网络请求库api
Retrofit: Square公司出品,基于OkHttp封装,增长了动态代理和数据解析的封装;支持多种数据格式的解析如json,xml等;因为使用了动态代理,因此更安全,api风格和OkHttp类似;
OkHttp: Square公司出品,底层封装Socket实现,特色是多个网络请求重用一个Socket长链接,而且使用链接池来缓存链接,因此网络延时低,请求高效稳定;支持http2和SPDY协议;使用OkIO进行读写操做,因为OkIO底层使用NIO,因此读写更高效;
Ion: 也是优秀的网络库,底层一样是封装Socket使用,重用长链接,维护链接池;支持多种数据格式的解析返回;Api设计简洁好用;可是流行程度没有OkHttp高。
Volley:谷歌官方在2012年开发者大会推出的网络库,特色是适合处理请求频繁可是数据量小的场景。自己对文件上传支持比较差,须要本身编写代码。底层实现是在2.3以前使用HttpClient,2.3以后使用HttpURLConnection;同时具备加载图片的功能,图片加载模块没有实现图片的内存缓存,须要咱们本身实现;
XUtil: 快速开发综合框架,拥有ViewInject,DB,网络请求,图片加载4个模块。网络模块底层封装的HttpURLConnection,知名度没有OkHttp高。缓存
图片加载总结安全
Android原生没有提供加载网络图片的方案网络
第三方图片加载库框架
UniversalImageLoader:老牌优秀的图片加载类库,特色是配置项丰富,支持圆形图片效果显示以及添加图片加载动画。
Picasso : Square公司出品。也是很早期出现的图片加载库。默认加载图片不会压缩,而且图片渲染模式是ARGB_8888,占用内存相比Glide稍微高一点,可是能够指定图片加载的宽高,便会依据图片的宽高进行缩放。
Glide:专门为优化Picasso而生,因此API和Picasso简直如出一辙。内部会自动根据图片的宽高来压缩图片,而且图片渲染模式为RGB_565,内存占用会减小一半,专门针对滑动中的图片加载有优化。和Picasso相比,推荐使用Glide。
Fresco : Facebook公司开源的。特色是在android4.4以及如下,将图片的放入Android native的C++内存中,而不是Java堆内存,因此占用的Java堆内存很小,大大减少了程序出现OOM的概率;支持WebP和Gif显示;支持多种图片的显示配置,好比圆形。ide