关于在Android应用程序中加载图像的想法

时间:2011-12-11 16:00:41

标签: java android memory-management drawable

我正在研究一款安卓游戏,这个概念非常合理,但是我经常因为内存错误而感到沮丧,并且发现自己花费了大部分时间来试图避开它们。

截至目前,所有动画都是使用png图像资源在画布中完成的。我猜测一些较大的应用程序并没有完全使用这种方法,因为存在比我更强大的图形令人印象深刻的游戏并且运行得更好。

我遇到的问题是我第一次加载图像资源并将它们分配给变量句柄。我从应用程序的最开始加载所有图像,从构造函数开始,我经常在运行android 2.1的设备上点击outofmemory错误。

所以我的问题是如何避免这种情况或改变我在动画上更容易记忆的方式。

重新缩放有助于暂时,但作为长期解决方案是不可接受的,我希望图像看起来不错。就像我说的那样,其他应用程序看起来很好并且有更多的动画,所以我相信它可以做到这一点。

我建议的另一个选项是更紧密地控制对象生命周期,以便在需要时分配图像。这似乎不是一个理想的解决方案,因为我的应用程序设置,大多数图像需要在大多数时间绘制,或至少可以随时调用。

我的最后一个想法是可能添加一些代码,在没有立即使用图像时解除分配内存。同样,这似乎并不理想,因为在例如画布上有一个敌人的情况下,每当他的画面改变时,他都需要为它重新分配一个图像,从而扼杀性能。

任何人都有任何一般性的想法我应该研究一下吗?我知道我错过了一些大事。我可以手动使可用内存更大吗?是否有一种内存占用较小的图像格式。

我正在努力更好地了解这里工作的基本知识。 我的整个drawable文件夹只有864kb,这对我来说似乎很荒谬。是什么让864kb的图像超出了内存限制?我想具体知道问题出在哪里。我需要一个解决方案,而不是解决方法。

编辑:我也注意到OpenGL似乎是我一直在使用的画布的替代品。我从未使用过OpenGL ......这就是我要找的东西吗?如果是的话,从简单的绘图切换到画布到OpenGL中的等效是多么困难?

0 个答案:

没有答案