android – Bitmap Image内存不足

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

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

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

然后我将其放入ImageView中显示.这样可以显示我的形象,使其品质全面.但是如果我点击返回,然后再次点击查看该图像(并重复这6次)..在第6次打开图像(activity2)我得到一个内存错误说,堆大小= 6919KB,分配= 3125KB,位图大小= 25848KB!

位图大小如何大?我假设它可能一直在创建新的实例,所以我决定把一个方法放在我的第二个活动中,当按下后键时,在这方法我设置我的位图= null,也是System.gc()清除垃圾收集器但是这没有解决问题.在第六次点击缩略图时,仍然会出现内存不足错误,以全分辨率查看图像

谁能解释为什么?谢谢

解决方法

有一些很好的信息来自android,它详细解释了这一点,以及如何克服这个问题 here.

每个像素是4字节. 6M像素= 24MB

一张照片可以耗尽所有的内存.

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 2592×1936 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问题,有教程如何正确地解决问题.

相关文章

这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...
这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识...
本篇内容主要讲解“Android如何开发MQTT协议的模型及通信”,...
本文小编为大家详细介绍“Android数据压缩的方法是什么”,内...