1

onActivityResult()相机中选择画廊图像我这样做:

Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageUri); 

其中 imageUri 文件约为 7.0MB,因此我正在创建较小尺寸的位图,并将其分配给相同的位图:

bitmap=Bitmap.createScaledBitmap(bitmap,screenWidth,screenHeight/2, true)

但是当时运行时内存异常增长,分配给7.0 MB位图的内存没有释放,GC没有收集之前分配的空间吗?或者还有什么原因?

4

1 回答 1

0

尝试这个:

bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageUri);
Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap, screenWidth, screenHeight/2, true);
bitmap.recycle();
bitmap = null;

注意:一开始7mb的内存分配是正常的。你得到一个大约 7mb 的位图。但是你应该在你把它缩小到一个新的位图后回收它。然后你可以看到 7mb 分配减少了。在此之后,您应该只看到在内存中分配的缩放位图的大小。

于 2013-11-23T16:57:28.123 回答