网络请求网络图片
網(wǎng)絡(luò)請求總結(jié)
Anroid原生網(wǎng)絡(luò)請求
HttpURLConnention: 谷歌原生提供的用于網(wǎng)絡(luò)請求的輕量級方案,支持數(shù)據(jù)壓縮;缺點是封裝性差,使用起來麻煩,尤其是做multipart提交的時候需要自己拼接符合http協(xié)議的請求參數(shù);另外HttpURLConnection在2.3版本以下有bug,具體是關(guān)閉流的時候會導致線程池的線程無法停止;2.3以上修復了該bug。?
HttpClient: 谷歌原生內(nèi)置的apache的HttpClient請求庫,功能多樣,缺點是API設(shè)計繁多,使用起來麻煩,隨著OkHttp越來越流行,谷歌決定在android4.4以后的版本,廢除HttpClient,而且HttpURLConnection的底層實現(xiàn)也采用的OkHttp;
第三方網(wǎng)絡(luò)請求庫
Retrofit: Square公司出品,基于OkHttp封裝,增加了動態(tài)代理和數(shù)據(jù)解析的封裝;支持多種數(shù)據(jù)格式的解析如json,xml等;由于使用了動態(tài)代理,所以更安全,api風格和OkHttp相似;?
OkHttp: Square公司出品,底層封裝Socket實現(xiàn),特點是多個網(wǎng)絡(luò)請求重用一個Socket長連接,并且使用連接池來緩存連接,所以網(wǎng)絡(luò)延時低,請求高效穩(wěn)定;支持http2和SPDY協(xié)議;使用OkIO進行讀寫操作,由于OkIO底層使用NIO,所以讀寫更高效;?
Ion: 也是優(yōu)秀的網(wǎng)絡(luò)庫,底層同樣是封裝Socket使用,重用長連接,維護連接池;支持多種數(shù)據(jù)格式的解析返回;Api設(shè)計簡潔好用;但是流行程度沒有OkHttp高。?
Volley:谷歌官方在2012年開發(fā)者大會推出的網(wǎng)絡(luò)庫,特點是適合處理請求頻繁但是數(shù)據(jù)量小的場景。本身對文件上傳支持比較差,需要自己編寫代碼。底層實現(xiàn)是在2.3之前使用HttpClient,2.3之后使用HttpURLConnection;同時具有加載圖片的功能,圖片加載模塊沒有實現(xiàn)圖片的內(nèi)存緩存,需要我們自己實現(xiàn);?
XUtil: 快速開發(fā)綜合框架,擁有ViewInject,DB,網(wǎng)絡(luò)請求,圖片加載4個模塊。網(wǎng)絡(luò)模塊底層封裝的HttpURLConnection,知名度沒有OkHttp高。
圖片加載總結(jié)
Android原生沒有提供加載網(wǎng)絡(luò)圖片的方案
第三方圖片加載庫
UniversalImageLoader:老牌優(yōu)秀的圖片加載類庫,特點是配置項豐富,支持圓形圖片效果顯示以及添加圖片加載動畫。?
Picasso : Square公司出品。也是很早期出現(xiàn)的圖片加載庫。默認加載圖片不會壓縮,并且圖片渲染模式是ARGB_8888,占用內(nèi)存相比Glide稍微高一點,但是可以指定圖片加載的寬高,便會依據(jù)圖片的寬高進行縮放。?
Glide:專門為優(yōu)化Picasso而生,所以API和Picasso簡直一模一樣。內(nèi)部會自動根據(jù)圖片的寬高來壓縮圖片,并且圖片渲染模式為RGB_565,內(nèi)存占用會減少一半,專門針對滑動中的圖片加載有優(yōu)化。和Picasso相比,推薦使用Glide。?
Fresco : Facebook公司開源的。特點是在android4.4以及以下,將圖片的放入Android native的C++內(nèi)存中,而不是Java堆內(nèi)存,所以占用的Java堆內(nèi)存很小,大大減小了程序出現(xiàn)OOM的幾率;支持WebP和Gif顯示;支持多種圖片的顯示配置,比如圓形。
轉(zhuǎn)載于:https://www.cnblogs.com/nangongyibin/p/10453037.html
總結(jié)
- 上一篇: Python 执行SQL带参数
- 下一篇: Bootstrap link 引入3文件