Glide和Picasso使用和區別

2021-07-26 01:27:38 字數 2151 閱讀 4047

. glide 優點

(1) 快取->**快取

glide 不僅是乙個快取,它支援 gif、webp、縮圖。甚至是 video,所以更該當做乙個**快取。

(2) 支援優先順序處理

(3) 與 activity/fragment 生命週期一致,支援 trimmemory

glide 對每個 context 都保持乙個 requestmanager,通過 fragmenttransaction 保持與 activity/fragment 生命週期一致,並且有對應的 trimmemory 介面實現可供呼叫。

(4) 支援 okhttp、volley

glide 預設通過 urlconnection 獲取資料,可以配合 okhttp 或是 volley 使用。實際 imageloader、picasso 也都支援 okhttp、volley。

(5) 記憶體友好

① glide 的記憶體快取有個 active 的設計

從記憶體快取中取資料時,不像一般的實現用 get,而是用 remove,再將這個快取資料放到乙個 value 為軟引用的 activeresources map 中,並計數引用數,在載入完成後進行判斷,如果引用計數為空則**掉。

② 記憶體快取更小

glide 以 url、view_width、view_height、螢幕的解析度等做為聯合 key,將處理後的快取在記憶體快取中,而不是原始以節省大小

③ 與 activity/fragment 生命週期一致,支援 trimmemory

④ 預設使用預設 rgb_565 而不是 argb_888

雖然清晰度差些,但更小,也可配置到 argb_888。

其他:glide 可以通過 signature 或不使用本地快取支援 url 過期

使用方法:

picasso

dependencies

glide

dependencies

//使用

picasso

picasso.with(context)//上下文

load("")

into(ivimg);

glide

glide.with(context)//上下文/activity

load("")

into(ivimg);

區別:glide預設的bitmap格式是rgb_565 ,比argb_8888格式的記憶體開銷要小一半。下面是picasso在argb8888下與glide在rgb565下的記憶體開銷圖(應用自身占用了8m,因此以8為基準線比較):

我們再來看看記憶體開銷圖,這次貌似glide花費了兩倍於上次的記憶體,但是picasso的記憶體開銷仍然遠大於glide。

// 指定picasso的大小

picasso.with(this)

.load("")

.resize(768, 432)

.into(ivimgpicasso);

但是問題在於你需要主動計算imageview的大小,或者說你的imageview大小是具體的值(而不是wrap_content),你也可以這樣:

picasso.with(this)

.load("")

.fit()

.centercrop()

.into(ivimgpicasso);

現在picasso的記憶體開銷就和glide差不多了。

雖然記憶體開銷差距不到,但是在這個問題上glide完勝picasso。因為glide可以自動計算出任意情況下的imageview大小。

不過,你可以改變這種行為,讓glide既快取全尺寸又快取其他尺寸:

glide.with(this)

.load("")

.diskcachestrategy(diskcachestrategy.all)

.into(ivimgglide);

下次在任何imageview中載入的時候,全尺寸的將從快取中取出,重新調整大小,然後快取。

glide的這種方式優點是載入顯示非常快。而picasso的方式則因為需要在顯示之前重新調整大小而導致一些延遲,即便你新增了這段**來讓其立即顯示:

//picasso

.nofade();

Picasso和Glide的區別

這樣看起來就會好很多。我們再來看看記憶體開銷圖,這次貌似glide花費了兩倍於上次的記憶體,但是picasso的記憶體開銷仍然遠大於glide。原因在於picasso是載入了全尺寸的到記憶體,然後讓gpu來實時重繪大小。而glide載入的大小和imageview的大小是一致的,因此更小。當然,pic...

Glide和Picasso的對比

下面是picasso和glide影象比較的結果。1920 x1080畫素影象載入到768 x432畫素imageview 我們再來看看記憶體開銷圖,這次貌似glide花費了兩倍於上次的記憶體,但是picasso的記憶體開銷仍然遠大於glide。原因在於picasso是載入了全尺寸的到記憶體,然後讓g...

深入對比Glide 和 Picasso

glide 和 picasso 可以說是目前 android 上最流行的載入庫了。大部分安卓應用開發人員都有使用過這兩個庫在他們的開發工作中。這兩個庫也都確實提供了大量載入的功能,而且也都經過了很多應用的檢驗,是可靠可信的。表面看上去似乎兩者工作原理很相似,但是實際上是有著很大差別的,主要體現在下面...