圖片加載庫對比

Volley

具有AsyncHttpClient(Http通信)和Universal-Image-Loader(加載網(wǎng)絡(luò)圖片)的優(yōu)點,適用于數(shù)據(jù)量不大缨恒,但通信頻繁的場景,這個類庫在網(wǎng)絡(luò)連接上做的比較好,圖片處理不夠強(qiáng)大(例如說處理圓角等處理)

基本用法:

1. 創(chuàng)建一個RequestQueue對象。(Volley.newRequestQueue(context));

2. 創(chuàng)建一個Request對象年缎。(StringRequest癌别、JsonRequest皂岔、ImageRequest)

3. 將Request對象添加到RequestQueue里面。

Volley中的ImageLoader:

1.創(chuàng)建一個RequestQueue對象

2.創(chuàng)建一個ImageLoader對象

3.獲取一個ImageListener對象

4. 調(diào)用ImageLoader的get()方法加載網(wǎng)絡(luò)上的圖片

可自定義一個類實現(xiàn)ImageCache接口展姐,重寫getBitmap和putBitmap,利用LruCache來進(jìn)行緩存

ImageLoader要比ImageRequest更加高效躁垛,不僅可以對圖片進(jìn)行緩存,還可以過濾掉重復(fù)的鏈接圾笨,避免重復(fù)發(fā)送請求教馆。

Volley中的NetworkImageView:

1. 創(chuàng)建一個RequestQueue對象。

2. 創(chuàng)建一個ImageLoader對象擂达。

3. 在布局文件中添加一個NetworkImageView控件土铺。

4. 在代碼中獲取該控件的實例。

5. 設(shè)置要加載的圖片地址板鬓。 這是一個控件悲敷,會自動獲取自身的寬高,壓縮自動化 下午將查看源碼俭令,了解其原理

創(chuàng)建一個RequestQueue對象時后德,首先其內(nèi)部會根據(jù)手機(jī)系統(tǒng)版本號是否大于9來選擇訪問網(wǎng)絡(luò)的方式,大于9選擇HttpUrlConnection唤蔗,否則選擇HttpClient,然后再來RequestQueue.start().而start()的工作內(nèi)容就是創(chuàng)建一個CacheDispatcher緩存線程和默認(rèn)四個NetworkDispatcher網(wǎng)絡(luò)請求線程探遵。

add()時,判斷當(dāng)前的請求是否可以緩存妓柜,如果不能緩存則直接將這條請求加入網(wǎng)絡(luò)請求隊列箱季,可以緩存的話則將這條請求加入緩存隊列。

默認(rèn)每條請求都是可以緩存的棍掐,自然就被添加到了緩存隊列中藏雏。根據(jù)網(wǎng)上的資料以及自己的理解大概就是這樣,具體怎么請求和怎么緩存沒去深究

Picasso的優(yōu)點:

1.處理Adapter中的 ImageView 回收和取消已經(jīng)回收ImageView的下載進(jìn)程

2.使用最少的內(nèi)存完成復(fù)雜的圖片轉(zhuǎn)換作煌,比如把下載的圖片轉(zhuǎn)換為圓角等掘殴,提供了接口來讓用戶可以自定義轉(zhuǎn)換操作

3.自動的內(nèi)存和硬盤緩存;

缺點:

1.沒有緩存過期

2.沒有生成thumbnails---android系統(tǒng)中相機(jī)和圖片的緩存文件

3.無法關(guān)心下載過程

使用:

Picasso.with(context) .load(url).resize(50, 50).centerCrop().into(imageView)

with的時候會執(zhí)行new Builder(context).build();

1.首先會使用OkHttp來實例一個downloader(HttpClient或者HttpUrlConnection)

2.再new LruCache(context);緩存

3.創(chuàng)建一個線程池ExecutorService粟誓,wifi下線程個數(shù)是4奏寨,4G是3,3G是2鹰服,2G是1病瞳。

4.創(chuàng)建了RequestTransformer對象揽咕,處理圖片大小圓角角度等。

在load()時創(chuàng)建Request(圖形操作的類)套菜,在into()中創(chuàng)建action(主要用于圖片加載后的回調(diào)亲善,有兩個回調(diào)方法complete和error)、bitmapHunter(一個Runnable,用于子類實現(xiàn)不同類型資源解析)逗柴,并最終交(Bitmap)給dispatcher執(zhí)行蛹头。

Universal-Image-Loader的優(yōu)點:

1. 多線程下載圖片,圖片可以來源于網(wǎng)絡(luò)戏溺,文件系統(tǒng)渣蜗,項目文件夾assets中以及drawable中等

2. 支持隨意的配置ImageLoader,例如線程池旷祸,圖片下載器袍睡,內(nèi)存緩存策略,硬盤緩存策略肋僧,圖片顯示選項以及其他的一些配置

3. 支持圖片的內(nèi)存緩存,文件系統(tǒng)緩存或者SD卡緩存

4.支持圖片下載過程的監(jiān)聽

5. 根據(jù)控件(ImageView)的大小對Bitmap進(jìn)行裁剪控淡,減少Bitmap占用過多的內(nèi)存

6.較好的控制圖片的加載過程嫌吠,例如暫停圖片加載,重新開始加載圖片掺炭,一般使用在ListView,GridView中辫诅,滑動過程中暫停加載圖片,停止滑動的時候去加載圖片

7. 提供在較慢的網(wǎng)絡(luò)下對圖片進(jìn)行加載

Universal-Image-Loader:在自定義的Application中涧狮,實現(xiàn)ImageLoaderConfiguration類來配置剛第二條的配置炕矮。可執(zhí)行ImageLoaderConfiguration .createDefault(this)者冤,來創(chuàng)建一個默認(rèn)的配置;

Universal-Image-Loader提供了displayImage(), loadImage(),loadImageSync()三種加載方法肤视,第三種方法是同步的,所以4.0以后不適用涉枫。第二種loadImage()主要提供監(jiān)聽loading開始邢滑,loading失敗,loading完成愿汰,loading取消困后。

displayImage()方法中提供ImageLoadingProgressListener接口,監(jiān)聽圖片下載過程

UIL提供了強(qiáng)引用緩存 衬廷、強(qiáng)引用和弱引用相結(jié)合的緩存摇予、弱引用緩存的幾種內(nèi)存緩存策略,提供了UnlimitedDiscCache(沒任何限制)吗跋,LruDiscCache等的硬盤緩存策略侧戴,在Application配置就可以了;

利用ReentrantLock解決重復(fù)的去從網(wǎng)絡(luò)上面請求圖片

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市救鲤,隨后出現(xiàn)的幾起案子久窟,更是在濱河造成了極大的恐慌,老刑警劉巖本缠,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件斥扛,死亡現(xiàn)場離奇詭異,居然都是意外死亡丹锹,警方通過查閱死者的電腦和手機(jī)稀颁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來楣黍,“玉大人匾灶,你說我怎么就攤上這事∽馄” “怎么了阶女?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長哩治。 經(jīng)常有香客問我秃踩,道長,這世上最難降的妖魔是什么业筏? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任憔杨,我火速辦了婚禮,結(jié)果婚禮上蒜胖,老公的妹妹穿的比我還像新娘消别。我一直安慰自己,他們只是感情好台谢,可當(dāng)我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布寻狂。 她就那樣靜靜地躺著,像睡著了一般对碌。 火紅的嫁衣襯著肌膚如雪荆虱。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天朽们,我揣著相機(jī)與錄音怀读,去河邊找鬼。 笑死骑脱,一個胖子當(dāng)著我的面吹牛菜枷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播叁丧,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼啤誊,長吁一口氣:“原來是場噩夢啊……” “哼岳瞭!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蚊锹,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤瞳筏,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后牡昆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體姚炕,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年丢烘,在試婚紗的時候發(fā)現(xiàn)自己被綠了柱宦。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡播瞳,死狀恐怖掸刊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情赢乓,我是刑警寧澤忧侧,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站牌芋,受9級特大地震影響苍柏,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜姜贡,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望棺棵。 院中可真熱鬧楼咳,春花似錦、人聲如沸烛恤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缚柏。三九已至苹熏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間币喧,已是汗流浹背轨域。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留杀餐,地道東北人干发。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像史翘,于是被迫代替她去往敵國和親枉长。 傳聞我的和親對象是個殘疾皇子冀续,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容