android图片优化,内存释放处理
16lz
2021-12-04
在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()就可以了。
更多相关文章
- Android开发学习笔记(八)Android应用界面编程 ImageView学习
- Android(安卓)开发技术周报 Issue#281
- Android修改原生RatingBar颜色、大小,以及自定义的样式
- Android(安卓)application context/activity context与内存泄露(
- Android分析之LowMemoryKiller
- 浅谈android的selector背景选择器
- Android(安卓)显示网络图片
- 在控件的任意位置显示图片
- [置顶] 我的Android进阶之旅------>Android之选项卡(TabHost)的