在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);
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");
……
以上两类