[问题] 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