VM预算的基于位图的Application RunTime异常

时间:2013-03-09 05:38:01

标签: android android-intent bitmap bitmapimage bitmapfactory

我正在开发基于大量位图的Application,现在问题是在某些设备中我在应用程序测试期间遇到了运行时异常。

这可能是因为位图大小超过VM预算。

现在的问题是我无法减少Application中的位图使用。那么可能的解决方案是什么。

我曾尝试过以下链接,但没有成功。

http://voices.yahoo.com/android-virtual-machine-vm-out-memory-error-7342266.html

请帮帮我。

3 个答案:

答案 0 :(得分:1)

This Happens because calling invalidate() just redraw same bitmaps on to the canvas..
use garbage collector  just try to free memory when these bitmap getting overdraw this 
might help you...:-)

答案 1 :(得分:0)

不使用时回收位图。压缩位图以减少内存使用量。看看这个链接。 http://developer.android.com/training/displaying-bitmaps/load-bitmap.html

使用MAT分析器检查位图使用了多少内存。

检查链接。谈谈内存管理以及如何使用MAT查找内存泄漏。 http://www.youtube.com/watch?v=_CruQY55HOk

尝试压缩btimap以减少内存使用量。

答案 2 :(得分:0)

您可以尝试使用不同的位图config加载位图。通过选择不同的配置文件,这可能有助于减少堆中加载的位图对象的大小。例如,如果您不需要保留alpha值,请使用RGB565 config。

Recyle位图;看看this,这是一个很好的阅读。

您可以指定

android:largeHeap="true"
清单文件中的

。这将允许更多堆到应用程序,但只有在可能的情况下。从API 11开始提供表单。

您还可以尝试向用户显示缩小版本,并允许任何操作(如默认的图库查看器应用)。

此外,请检查您所获得的内容是否是“由于位图而导致的VM预算超出”问题,因为您自己并不那么确定。