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