android - fresco庫(kù)加載圖片出現(xiàn)OOM,求使用過(guò)的大神解決
問(wèn)題描述
有沒(méi)有人使用過(guò)fresco庫(kù)加載圖片解決OOM問(wèn)題的?因?yàn)槲业捻?xiàng)目需要大量加載圖片,用了fresco庫(kù)主要就是想解決GC相關(guān)OOM問(wèn)題,但是發(fā)現(xiàn)項(xiàng)目在AS中使用fresco庫(kù)運(yùn)行在21安卓版本以下還是會(huì)出現(xiàn)OOM問(wèn)題,運(yùn)行在21及以上的版本不會(huì)出現(xiàn)任何問(wèn)題,gradle一些相關(guān)語(yǔ)句如下:compileSdkVersion 23buildToolsVersion ’23.0.3’minSdkVersion 15targetSdkVersion 23compile ’com.facebook.fresco:fresco:0.9.0+’報(bào)錯(cuò)圖片:
問(wèn)題解答
回答1:我能推薦glide么https://github.com/bumptech/g...
回答2:用Glide吧
回答3:1、查看系統(tǒng)是否有使用大內(nèi)存的代碼或死循環(huán)。2、可以添加JVM的啟動(dòng)參數(shù)來(lái)限制使用內(nèi)存:-XX:-UseGCOverheadLimit
可以給fresco 添加屬性,改變圖片的大小
回答4:同推薦glide。代碼簡(jiǎn)單,自動(dòng)壓縮緩存圖片
在5.0(也就是API21)以下系統(tǒng),F(xiàn)resco將圖片放到一個(gè)特別的內(nèi)存區(qū)域。當(dāng)然,在圖片不顯示的時(shí)候,占用的內(nèi)存會(huì)自動(dòng)被釋放。這會(huì)使得APP更加流暢,減少因圖片內(nèi)存占用而引發(fā)的OOM。 fresco中文文檔上面寫的
而且現(xiàn)在最新的是 compile ’com.facebook.fresco:fresco:0.13.0’ 了,可以嘗試一下
回答5:首先說(shuō)一下,我也是來(lái)幫頂?shù)摹?/p>
那些說(shuō)用Glide的我不知道是啥心理。你哪怕說(shuō)說(shuō)為啥用Glide呀(雖然我一直用glide)
遇到問(wèn)題應(yīng)該去解決,換庫(kù)是一種方法,但起碼要嘗試失敗后再去換。
我有個(gè)疑問(wèn),fressco為啥會(huì)oom啊?不是說(shuō)業(yè)界最叼的嗎?
說(shuō)下我的思路:如果樓主真把這個(gè)庫(kù)玩出oom了,我覺(jué)的還是挺厲害的,不妨排查代碼,哪里不合理。如果你覺(jué)得你都對(duì)了,不妨給github發(fā)一個(gè)issue
回答6:你這個(gè)問(wèn)題我以前使用Fresco時(shí)候遇到過(guò),當(dāng)時(shí)懷疑是Fresco本身問(wèn)題,后來(lái)發(fā)現(xiàn)是自己代碼問(wèn)題,一般情況下,F(xiàn)resco本身是不會(huì)觸發(fā)OOM,建議先檢查自己的代碼。
回答7:同 Glide
回答8:這個(gè)是編譯過(guò)程oom,不是運(yùn)行時(shí)oom,和使用什么庫(kù)沒(méi)有關(guān)系。編譯過(guò)程產(chǎn)生oom,需要調(diào)整編譯參數(shù),如 @wordplat 所言
android {dexOptions { javaMaxHeapSize '4g'}}回答9:
你這個(gè)其實(shí)是代碼編譯時(shí)產(chǎn)生的OOM,并不是這個(gè)框架本身產(chǎn)生的問(wèn)題,所以你只需要調(diào)整JVM堆內(nèi)存的大小就可以了。
dexOptions { javaMaxHeapSize '4g'}回答10:
有些時(shí)候還是貼代碼來(lái)的方便
