您的位置:首页 > 移动开发 > Android开发

Android开发实践中的OOM

2016-03-07 14:00 676 查看
1.ViewPager+fragment +多图的OOM

      项目组有一个项目,是做一个像ppt效果的apk,于是就用到了ViewPager+fragment来实现,每个页面加入想要的动画即可,虽然他们图片已经控制的很小了,虽然我的ViewPager使用的adater是FragmentStatePagerAdapter的子类,但是滑动到20页的时候,还是会OOM,最后才在这里找到了答案:http://blog.csdn.net/u011291302/article/details/50177507

      原因:虽然FragmentStatePagerAdapter会销毁不需要的fragment,但是如果该图片一直被imageview保持引用就会出现无法回收的状态,最终这些图片越来越多,导致内存溢出。然后要解决的问题就是在适当的时间释放掉这些引用。

      这里viewpager和fragment配合使用,当然是以fragment为一个单位,那么在fragment的onDestroyView释放引用。代码如下

protected void unbindDrawables(View view) {
if (view.getBackground() != null) {
view.getBackground().setCallback(null);
}
if (view instanceof ViewGroup && !(view instanceof AdapterView)) {
for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) {
unbindDrawables(((ViewGroup) view).getChildAt(i));
}
((ViewGroup) view).removeAllViews();
}
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: