網絡請求總結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