1,在Bitmap没有复用的情况下,如图:
- 在这种情况下,使用bitmap.getByteCount(),得到的内存大小是这一整块的大小。
2,在安卓4.4版本及以上版本,同时在复用的情况下。如图:
- 在这种情况下,使用bitmap.getByteCount(),得到的内存大小是“新的Bitmap占用的内存区域”,而“剩下的内存区域”是没有使用到的。
- 使用bitmap.getAllocationByteCount(),得到的内存大小是黑色框的区域,也就是“新的Bitmap占用的内存区域”+“剩下的内存区域”的总和。
- 虽然复用的图片只使用了一部分内存,也就是“新的Bitmap占用的内存区域”,但是它所占用的内存其实还是黑色框的区域。
- 因为Android 4.4及以上只需要被复用的Bitmap的内存必须大于等于需要新获得Bitmap的内存,则允许复用此Bitmap。
3,在安卓4.4版本以下版本,同时在复用的情况下。如图:
- 在这种情况下,使用bitmap.getByteCount(),获得的内存大小,是黑色边框一整块的区域。
- 4.4以下(3.0以上)则被复用的Bitmap与使用复用的Bitmap必须宽、高相等并且使用复用的Bitmap解码时设置的inSampleSize为1,才允许复用。