赞
踩
在Android3.0以下版本的系统中,Bitmap对象的内存都是在native层分配的,它不会占用Java堆内存的空间。Android3.0之后,Bitmap内存的分配统一交给了Java堆进行分配,方便了内存的管理。而Android 8.0(Android O)之后的版本中,Bitmap内存分配又回到了native层,它是在native堆空间进行分配的。
我们接下来分析下Android8.1上的Bitmap对象的创建及内存分配过程。
使用Bitmap直接创建:
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
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");
……
以上两类创建图像的方式都是我们在开发中比较常用到的,那么它们的内部是如何实现Bitmap对象的创建及内存空间分配的呢?
我们首先从Java层的Bitmap对象开始,APP从上层调用相关接口,最直接接触的对象就是Java层的Bitmap类
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。