在android开发过程当中,如果要用到大量图片而你又没有做好图片内存的回收,很容易就会造成OOM内存溢出的问题。下面介绍一种图片内存回收的方法,就是将图片从添加到的ViewGroup中一张一张拿出来回收,具体代码如下:

private void recycleBitmap( ){   if(viewGroup != null)   {         int count =  viewGroup.getChildCount;         for(int i=0; i <count; i++ )          {             View view = viewGroup.getChildAt(i);             ImageView img = (ImageView)view.findViewById(R.id.Image);              if(img != null)               {                   Drawable drawable = img.getDrawable( );                   if(drawable != null)                    {                            if(drawable instanceof BitmapDrawable)                             {                               BitmapDrawable bitmapDrawable = (BitmapDrawable)drawable;                                Bitmap bitmap = bitmapDrawable.getBitmap( );                                if(bitmap != null)                                   bitmap.recycle( );                              }                     }       }             }  } }


其中的ViewGroup可以是ViewFlipper、ViewPager等等继承自ViewGroup的子类

有时一个activityfinish退出程序后重新进入会报oom内存溢出强制关闭程序这是因为activity虽然已经destroy掉了但它所占有的内存还没有释放,这时你要看下是不是哪个ViewGroup添加了许多图片没有释放,你可以在onDestroy中将ViewGroup中的viewremove掉ViewGroup.removeAllViews()就可以了。

更多相关文章

  1. Android 显示网络图片
  2. Android application context/activity context与内存泄露(转)
  3. 在控件的任意位置显示图片
  4. 使用架包实现android异步加载图片
  5. android实现自定义相机以及图片的水印
  6. Android使用BitmapFactory.Options解决加载大图片内存溢出问题
  7. Android 图片选择器
  8. 用layer-list一次加载多个层次图片

随机推荐

  1. Android面试总结--Android篇
  2. Android(安卓)使用View类绘图
  3. 命令行创建虚拟环境
  4. Android下so注入汇总
  5. 【Android(安卓)电量优化】JobScheduler
  6. 通过ua检测浏览页面的设备是phone还是tab
  7. android语音识别 android.speech 包分析
  8. Android设置Selector不同状态下颜色及图
  9. 解决Ubuntu报错 E: Unable to locate pac
  10. CSS:媒体查询-复习