当前位置:   article > 正文

Android8.1 Bitmap对象的内存分配解析_android 获取bitmap内存地址

android 获取bitmap内存地址

在Android3.0以下版本的系统中,Bitmap对象的内存都是在native层分配的,它不会占用Java堆内存的空间。Android3.0之后,Bitmap内存的分配统一交给了Java堆进行分配,方便了内存的管理。而Android 8.0(Android O)之后的版本中,Bitmap内存分配又回到了native层,它是在native堆空间进行分配的。

我们接下来分析下Android8.1上的Bitmap对象的创建及内存分配过程。

常用的创建Bitmap对象的方法

使用Bitmap直接创建:

Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
  • 1

BitmapFactory创建:

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.img);

Bitmap bitmap =BitmapFactory.decodeStream(getResources().openRawResource(R.drawable.img));

Bitmap bitmap = BitmapFactory.decodeFile("mnt/sdcard/img.jpg");

……
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

以上两类创建图像的方式都是我们在开发中比较常用到的,那么它们的内部是如何实现Bitmap对象的创建及内存空间分配的呢?

Java层的Bitmap类

我们首先从Java层的Bitmap对象开始,APP从上层调用相关接口,最直接接触的对象就是Java层的Bitmap类

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/303744
推荐阅读
相关标签
  

闽ICP备14008679号