1. 程式人生 > >android應用程式圖片OutOfMemory問題終級方案

android應用程式圖片OutOfMemory問題終級方案

網上介紹這類的文章很多,這裡我就不復制、貼上了。說下自己遇到問題的過程吧。

原因:專案中在多個view進行切換時,因為圖片問題,引起out of memery錯誤。但經過嚴格程式碼檢查發現,從網路上載入圖片時,都已經是使用SoftReference或WeakReference了,系統不是會自動回收嗎?那麼怎麼還會有這種 out of memory問題呢?

思考:是不是打包在drawable中的圖片的原因呢? 是不是應用程式中decode  drawable這個資料夾內的圖片時,都是使用強引用來decode的呢? 如果是的話,那麼改種實現會不會就好了呢?

解決方案:把drawable中的大圖,放到工程的asset目錄下,程式中在使用時,還是使用SoftReference來引用,結果該OOM問題解決。

總結:首先,在應用程式使用圖片時,網上的那一些方法如:options設定等等,都是要注意的。其次:針對打包在應用內的特大圖片,則不能直接放入drawable中進行引用,而是放到asset目錄中進行動態解析,這樣才能完全避免OOM問題。

注:此文已過時,目前最新的解決方案google官方已給出。如:使用LruCache,動態計算decode options等等。有興趣的可查閱google文件。(2014-05-05)