android - 位图图像内存不足

标签 android image memory view bitmap

我知道有很多关于 android 位图图像内存不足的讨论,但我想知道是否有人可以向我解释..

目前在我的应用程序中,我有一个列出图像缩略图(低质量)的 Activity ,当我单击图像时,它会打开一个新 Activity 以全屏查看图像。在我的第二个 Activity 课上,我有:

BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 1;
bm = BitmapFactory.decodeFile(myImagePath, options);

然后我把它放到一个 ImageView 中来显示它。这有效并以完整质量显示我的图像。但是,如果我单击返回,然后单击以再次查看该图像(并重复此 6 次).. 第 6 次打开图像( Activity 2)我收到内存不足错误,说堆大小 = 6919KB,分配 = 3125KB,位图大小 = 25848KB!

位图大小怎么这么大?我认为它可能一直在创建新实例,所以我决定在我的第二个 Activity 中放置一个方法,用于按下后退键..在这个方法中我设置了我的 bitmap=null 并且还做了 System.gc()清除垃圾收集器但这并没有解决问题。在第 6 次单击缩略图以全分辨率查看图像时,我仍然遇到内存不足的错误

谁能解释为什么?谢谢

最佳答案

来自 android 的一些重要信息详细解释了这一切,以及如何克服这个问题 here .

每个像素为 4 个字节。 6M 像素 = 24MBs

一张照片可以用完所有的内存。

Bitmaps take up a lot of memory, especially for rich images like photographs. For example, the camera on the Galaxy Nexus takes photos up to 2592x1936 pixels (5 megapixels). If the bitmap configuration used is ARGB_8888 (the default from the Android 2.3 onward) then loading this image into memory takes about 19MB of memory (2592*1936*4 bytes), immediately exhausting the per-app limit on some devices.

我再次向您指出 great link我从另一个 SO Question 中找到了如何正确解决问题的教程。

关于android - 位图图像内存不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6681988/

相关文章:

android - HTML5 嵌入式视频无法在移动设备上加载

html - 隐藏的溢出使 img 下降并被剪裁

c - C语言中的"register"关键字?

c - 免费通话时进行核心转储

android - 如何更新警报对话框的状态多选项目

Android Wear - 访问移动共享首选项

Android点击高亮问题: After updating to Android studio 2. 2预览3

java - 我想要一个简单的教程网站来学习java中的图像?

image - 当cached_network_image或Image.Network填充数据时,Flutter应用程序崩溃很多,仅显示与设备的连接丢失

c - 当值可能相同时避免写入是否更快