android进阶篇一、Bitmap内存管理及各版本区别

    对于android内存管理上,最重要的还是Bitmap内存的使用,以前对于Bitmap的内存总是一知半解状态,只是知道需要调用recyle()最安全。今天对于内存的管理做一个总结。

    

    Android内存回收机制

    在Android2.2(API 8)以及更低的版本中,当发生垃圾回收时,你的应用线程会停止。这会导致延迟,使得性能降低。Android2.3添加了并发垃圾收集,这意为着一个bitmap不再被引用的时候,内存很快就被回收。


    Android的bitmap内存管理演化

    在Android2.3.3(API 10)和更低的版本中,bitmap的像素数据是存储在native内存中的,它独立于bitmap本身,bitmap是存储在Dalvik堆中的。

在native内存中的bitmap的像素数据不会在一个可预测的行为之释放,潜在的导致应用内存超过限制并且崩溃。在android3.0(API 11)中,bitmap的像素数据存储在Dalvik堆中于bitmap相关联

    优化bitmap内存管理
    在android2.3.3以及更低的版本中,建议使用recycle()(释放native的内存),如果你在你的应用中大量的显示bitmap数据,你很可能得到OutOfMemoryError错误,recycle()方法允许一个应用尽快回收内存
    在android3.0以及更高的版本中,Android3.0(API 11)引入了BitmapFactory.Options.inBitmap,如果设置了这个选项,当加载内容的时候,使用Options对象的解码方法将会尝试复用一个存在的bitmap这意为着bitmap的内存被复用了,导致性能提升,并且无须分配与重新分配内存使inBitmap有一些需要注意的地方: 重用的bitmap必须与源内容尺寸一致(保证相同的内存被使用),并且是JPEG或者PNG格式(作为resource或者stream)

    关于Bitmap在各个版本之间如何使用,官方bitmapfun给了一个很玩这个的例子,大家可以去学习一下。
    关于android的一些难题在android官方文档中基本都能找到很好的答案,希望大家重视,大家一起学习!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值