圖片框架 - 三方庫調(diào)研

一、主流圖片框架:

Android-Universal-Image-Loader
Picasso
Glide
Fresco

具體圖片庫介紹參考對應(yīng)項目文檔。

Android-Universal-Image-Loader、Picasso不支持gif圖,且項目比較早,目前大部分app會優(yōu)先考慮使用功能更全面的Glide和Fresco。

二、圖片庫對比

對比項 Glide Fresco
發(fā)布時間 2014年9月 2015年5月
是否支持gif true true
是否支持webP 支持靜圖,不支持動圖 都支持
視頻縮略圖 true true
大小 500K 2-3M
加載速度
靜圖(max java heap) 11.1MB 13.9MB
靜圖(max native heap) 43.8MB 43.8MB
靜圖(avg wait time) 34ms 44ms
動圖(max java heap) 74.8.1MB 36.1MB
動圖(max native heap) 66.8MB 545.3MB
動圖(avg wait time) 33910ms 15142ms
緩存 內(nèi)存、磁盤 三級緩存,分別是 Bitmap緩存,未解碼圖片緩存, 文件緩存。
加載進(jìn)度 false true

數(shù)據(jù)參考:https://cloud.tencent.com/developer/article/1385853

整體對比來看,需要考慮的區(qū)別有:

1.webP動圖支持:

本地webP的動圖和靜圖Glide加載都沒問題,但是外鏈的webP動圖,Glide加載不了。

Glide(最新4.11.0版本): 不支持加載外鏈的webP動圖,但是可以參考Fresco寫個webpsupport,現(xiàn)在也有類似的三方庫,比如:https://github.com/zjupure/GlideWebpDecoder。自測發(fā)現(xiàn)確實(shí)可以做到。
Fresco本身有webpsupport支持。
這點(diǎn)上來說,兩種已經(jīng)沒有太多差異。

2.內(nèi)存:
動圖,max java heap:Glide開銷比Fresco大不少。max native heap: Fresco碾壓了Glide。java heap確實(shí)Fresco開銷小點(diǎn),不容易造成oom,但是native heap太高了,雖然native heap不受虛擬機(jī)約束,但是對設(shè)備整體內(nèi)存是有壓力的,尤其是像盒子這樣的設(shè)備,內(nèi)存也就是1G,小的512M。

Fresco核心功能下沉到了native實(shí)現(xiàn)的,因此native heap開銷,java heap開銷小,但是如果native heap開銷如上表數(shù)據(jù)所示的話,那確實(shí)也太大了點(diǎn),從內(nèi)存這點(diǎn)上看,我認(rèn)為Glide至少不會比Fresco差。

3.包大?。?/strong>
Glide比Fresco更輕量級。Glide能省2M左右的包大小,這個也比較關(guān)鍵。

目前沒發(fā)現(xiàn)必須Glide切到Fresco的理由,當(dāng)然也有可能有些點(diǎn)是我沒調(diào)研到的,歡迎討論。另外切換成本也比較高,F(xiàn)resco是基于自定義控件SimpleDraweeView做的,而Glide是基于ImageView,所以改動也會比較大。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容