我正在研究需要显示4个大位图(6 x屏幕大小)的Android应用程序。一开始,我遇到了问题,但内存管理的代码优化适用于整个设备。但是在4.0.3 android版本的华硕Transformer Prime上,我有一个OutOfMemory错误。这很奇怪,因为堆大小似乎是256Mb。与其正确运行的其他设备相比有很多。
我们已激活大堆并停用硬件加速。
您对我们的问题有所了解吗?
答案 0 :(得分:2)
您的屏幕是1280x800,因此屏幕大小的32bpp位图需要不到4MB,而6x屏幕尺寸的位图需要23.5MB。你想要其中的四个......那是93.75MB。
进程堆限制因设备而异,但我认为64MB是很多(也许我落后于时代)。 256MB是巨大的!
恕我直言,你不应该试图在内存中保留如此庞大的位图。你最好将它们分成不大于屏幕的瓷砖,并根据需要加载瓷砖。
或者,尝试使用16bpp映像或在JNI中为大量位图分配空间(即在C中)并完全绕过Java堆管理。