当前位置: 代码迷 >> Android >> 关于ImageView中的Bit地图内存有关问题
  详细解决方案

关于ImageView中的Bit地图内存有关问题

热度:85   发布时间:2016-04-28 07:56:00.0
关于ImageView中的Bitmap内存问题

bm1 = BitmapFactory.decodeResource(getResources(), R.drawable.test_1);
iv1.setImageBitmap(bm1);

bm1 = null;



如果Bitmap bm1是类成员,给ImageView设置图片后,是不是要马上设置为null?

否则假设有下一次的更改图形:


bm2 = BitmapFactory.decodeResource(getResources(), R.drawable.test_2);
iv1.setImageBitmap(bm2);


bm1 实际上不会被回收,直到类被杀死,是不是这样?


------解决方案--------------------
是的,在不用这个bitmap的时候要将其回收,android内存溢出的原因80%是由bitmap导致的!
------解决方案--------------------
2点
1.既然是类成员  你下次要使用  直接使用bm1就好了 没必要新建bm2

2.像这种bitmap  不是setImageBitmap就可以回收的   不然会报错的(因为此时正在显示着呢)
所以,只要不是创建bitmap特别频繁,都可以在ondestroy里面回收
------解决方案--------------------
Bitmap回收时if(bitmap != null){bitmap.recycle(); bitmap = null;}
你这个只需要一个Bitmap就行了,一般在activity的OnDistory里面回收bitmap,而且看你这个代码不就是给ImageView设图片吗,没必要转换成bitmap啊