0

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

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

现在的问题是我不能减少应用程序中位图的使用。所以有什么可能的解决方案。

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

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

请帮我。

4

3 回答 3

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...:-)
于 2013-03-09T05:43:15.773 回答
0

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

使用 MAT Analyzer 检查位图使用了多少内存。

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

尝试压缩 btimap 以使用更少的内存。

于 2013-03-09T06:11:56.550 回答
0

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

回收位图;看看这个,这是一个很好的阅读。

您可以指定

android:largeHeap="true"

在您的清单文件中。这将允许更多的应用程序堆,但前提是它是可能的。从 API 11 开始可用。

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

另外,请检查您所得到的是否完全是“由于位图而超出 VM 预算”问题,因为您自己并不确定。

于 2013-03-09T06:31:03.157 回答