【发布时间】:2014-05-09 02:27:09
【问题描述】:
我正在从图库中选择一张图片并将其显示在 ImageView 中。但是,当我运行它时,我可以看到巨大的堆增长(高达 60MB)。
代码如下:
else if(requestCode == PICK_IMAGE && resultCode == RESULT_OK){
Uri selectedImage = data.getData();
try {
img = (Bitmap)MediaStore.Images.Media.getBitmap(
this.getContentResolver(),
selectedImage);
} catch (FileNotFoundException e) {
Toast.makeText(this, e.toString(), Toast.LENGTH_LONG).show();
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ImgContainer.setImageBitmap(img);
img.compress(Bitmap.CompressFormat.PNG, 100, boas);
byteArray = boas.toByteArray();
try {
boas.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
所有变量都已在类开始时正确初始化,所以这不是问题。
感谢您的宝贵时间和帮助。
【问题讨论】:
-
图像有多大,这是在某种循环中吗?
-
它不在循环中。我不知道图像有多大,但它正在为画廊中的一些图像做这件事。有些图像加载速度很快,有些使我的 UI 冻结并消耗大量内存。我怎样才能防止这种情况发生?
标签: java android memory bitmap