我正在开发基于大量位图的应用程序,现在的问题是,在某些设备中,我在应用程序测试期间遇到了运行时异常。
这可能是因为位图大小超过了 VM 预算。
现在的问题是我不能减少应用程序中位图的使用。所以有什么可能的解决方案。
我曾尝试以下链接,但没有成功。
http://voices.yahoo.com/android-virtual-machine-vm-out-memory-error-7342266.html
请帮我。
我正在开发基于大量位图的应用程序,现在的问题是,在某些设备中,我在应用程序测试期间遇到了运行时异常。
这可能是因为位图大小超过了 VM 预算。
现在的问题是我不能减少应用程序中位图的使用。所以有什么可能的解决方案。
我曾尝试以下链接,但没有成功。
http://voices.yahoo.com/android-virtual-machine-vm-out-memory-error-7342266.html
请帮我。
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...:-)
不使用时回收位图。压缩位图以减少内存使用。看看这个链接。http://developer.android.com/training/displaying-bitmaps/load-bitmap.html。
使用 MAT Analyzer 检查位图使用了多少内存。
检查链接。讨论内存管理以及如何使用 MAT 查找内存泄漏。http://www.youtube.com/watch?v=_CruQY55HOk。
尝试压缩 btimap 以使用更少的内存。
您可以尝试使用不同的位图配置加载位图。通过选择不同的配置文件,这可能有助于减小堆中加载的位图对象的大小。例如,如果您不需要保留 alpha 值,请使用 RGB565 配置。
回收位图;看看这个,这是一个很好的阅读。
您可以指定
android:largeHeap="true"
在您的清单文件中。这将允许更多的应用程序堆,但前提是它是可能的。从 API 11 开始可用。
您还可以尝试向用户显示按比例缩小的版本,并允许任何操作(如默认图库查看器应用程序所做的那样)。
另外,请检查您所得到的是否完全是“由于位图而超出 VM 预算”问题,因为您自己并不确定。