android回收图片使用内存

在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的子类

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

相关推荐