Bitmap的使用习惯——及时释放Bitmap占用的内存

在上一篇文章已经说过,Btimap是一个吃内存的大家伙,所以我们需要养成一个好的习惯,才能更好的驾驭Bitmap,让其对内存的占用变得合理起来。在这里,主要说明一下:什么时候需要释放Bitmap,如何释放Bitmap占用的内存。

当Bitmap不再需要使用时,我们应该回收它占用的内存,如果我们直接把指向bitmap的引用置null的话,这样bitmap还是会存在内存中,直到GC机制起作用时,才可能会把这个bitmap回收。这样并不能达到我们想要的目标,及时释放掉这份没用的内存。那么,释放的方法很简单:

bm.recycle();	// 回收bitmap的内存
bm = null;
此时就能够回收没用的bitmap占用的内存了。

另外,在这里也介绍一下简单的ImageView的优化:

使用ImageView时,如果要显示的图片很大,达到1M甚至更大,而需要展示在屏幕上的宽高并不大。那么直接把这个图片设置给ImageView将会造成不必要的内存浪费。此时,就可以使用以下方法来优化了:

imageView = new ImageView(mContext);
// 按实际的大小生成的Bitmap
Bitmap bm = BitmapFactory.decodeResource(mContext.getResources(), mImageIds[arg0]);
bm = Bitmap.createScaledBitmap(bm, width, height, false);
// 给ImageView设置资源
imageView.setImageBitmap(bm);

先把图片读出来生成Bitmap对象,然后再把这个对象进行宽高缩小,把它的实际宽高缩小成我们指定的宽高,这个宽高可以是你ImageView的实际宽高,这样就能够使到要展示的图片在ImageView中显示不会失真,也能够使其占用的内存降低,达到优化内存的目的。当然,在我们不再需要这张图片Bitmap时,我们就可以使用前面讲到的方法释放掉Bitmap占用的内存了。


  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值