作者:
sdyy (中壢市的小智)
2014-06-10 22:16:18直接回一篇好了
在這邊會發生OOM,其實是因為viewpager的頁面資源不會被釋放
從你的例子來看,你每多讀一張Bitmap,就多佔一份記憶體
你雖然有在destroyitem時,去做釋放的動作,
但很可惜當你在一直滑動,讀取新的頁面時,
舊的頁面並不會立即被釋放,然後也就OOM。
簡單的解決方法是,不要直接用viewpager+view
改用viewpager+fragment
然後當fragment進入 onpause時,立即釋放Bitmap,
更好一點的做法,用cache管理Bitmap,
onpause時,取消view跟Bitmap的關聯,也就是設為null
然後在cache裡面判定是否需要釋放Bitmap