[問題] viewPager Imageview OOM

作者: fake01 (假面超人)   2014-06-10 14:10:24
大家好
最近用了viewPager + FrameLayout 可以玩玩相簿,
但不斷的出現OOM已經快瘋掉了,
已經使用AsyncTask處理了大圖片溢出的問題,
(BitmapFactory.Options options;
options.inSampleSize = 2;
......)
主要會有問題的地方,是當imageview.setImageBitmap(Bmp)後
,會暫存住bitmap,在PagerAdapter有提供
destroyItem(View container, int position, Object object)
讓我recycle掉存在imageview裡的bitmap
imageview.setImageDrawable(null);
if(oldBitmap !=null && !oldBitmap.isRecycled())
{
oldBitmap.recycle();
oldBitmap = null;
}
我以為這樣已經可以將bitmap給清除乾淨,但是當換了多張圖片後
,還是出現了oom的問題(Caused by: java.lang.OutOfMemoryError:
(Heap Size=98304KB, Allocated=91403KB),想請問各位,該如何解決呢?
(ps. 突然想到會不會有可能是,ViewPager 每滑動一次,所以新增一個view
所以除了刪除舊有的bitmap 舊有的view 也須手動刪除?)
謝謝大家
作者: fake01 (假面超人)   2014-06-10 14:24:00
加入((ViewPager) container).removeView(itemView);在destroyItem 中 還是oom
作者: visor (~~~~~~~~~~)   2014-06-10 16:50:00
android:largeHeap="true" 試試看
作者: fake01 (假面超人)   2014-06-10 17:20:00
V大 是可行,不過超過一定張數還是會OOM剛試了一下 註解掉XX.setImageBitmap(bmp) 就不會oomimageview 好像會卡住暫存阿...
作者: lin1987www (林奕忠)   2014-06-10 18:31:00
你可以試試用 Android-Universal-Image-Loaderhttp://ppt.cc/gwB1
作者: sdyy (中壢市的小智)   2014-06-10 21:52:00
其實這是viewpager的問題 他會把每一頁的圖都鎖住無法釋放所以你可以再背景用一個圖片管理,在非瀏覽頁面時釋放Butmap沒看到你的p.s. 其實就是你所想的那樣 view會把Butmap鎖住我的bitmap怎麼都打成butmap....所以在瀏覽頁面+-1~2以外的view最好都要及時setBitmap = null應該是imageview.setImageDrawable(null); 重點是即時而非在destoryitem才呼叫

Links booklink

Contact Us: admin [ a t ] ucptt.com