位图大小超过VM预算在android中

时间:2011-12-28 14:26:05

标签: android

在我的Android应用程序中,我已经通过相机在ImageView上设置了图像。它的工作正常。但当我捕捉图像并返回到屏幕,并在imageview上设置该图像,如果我这样做3到4次,我得到这个错误的位数大小超过VM预算................ ......请为此提供任何解决方案。

this is my code below :

 BitmapFactory.Options options = new BitmapFactory.Options();
                 options.inSampleSize = 4;
                 options.inTempStorage = new byte[16 * 1024];
                 image_from_camera.setImageBitmap(BitmapFactory.decodeFile(
                 "/sdcard/"+chore_string+".jpg", options));

i have done using bitmap.recycle(); or System.gc();  

但这不起作用。我需要从位图中释放内存,再次单击相机按钮以在应用程序中拍摄第二张照片。请需要任何帮助........

感谢。 ...

1 个答案:

答案 0 :(得分:1)

增加inSampleSize的值将减少加载图像所需的内存开销。将其更改为8,12或16 ......图像最终应该加载但看起来可能不太好。

但是,在加载之前,您似乎可能正在使用大量内存。

使用System.getRuntime()来获取运行时,然后查看最大内存,总内存和可用内存是什么,以便更好地了解您拥有多少空间。

在分配之前,您可能会泄漏内存。

http://developer.android.com/reference/java/lang/Runtime.html

另外(烦人地)如果你使用的设备无法运行android 3.0,那么所有使用的内存都将显示在运行时调用中。考虑使用3.0设备来更全面地了解内存使用情况。