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(); } }