Android - 背景图片占用太多内存

时间:2012-01-23 16:37:47

标签: android memory view background

在我的游戏中,我有3个活动:主菜单 - >子菜单 - >游戏画面。因此,当用户在游戏屏幕中玩游戏时,前两个活动处于非活动状态,但不会被破坏。

每个布局都有一个很好的背景图像。图像本身非常小(40k),但在大屏幕(比如Galaxy平板电脑)上,它需要几兆的内存。 从前两个活动中删除后台后,第三个活动中的内存使用率从18M降至13M!

有没有办法保留背景并恢复所有浪费的内存?

4 个答案:

答案 0 :(得分:4)

由于布局中的背景图片,我遇到了类似的问题。图像的内存分配的正常大小应为height * width * 4字节(在模式ARGB_8888中,默认模式)。

如果您在展示活动时看到并分配了18MB,则必定存在一些问题。检查是否将背景图像放在drawable文件夹中。在这种情况下,系统必须将该图像缩放到屏幕的特定密度,从而导致大量内存开销。

解决方案:

  1. 在每个可绘制文件夹(mdpi,hdpi,xhdpi ...)中放置特定版本的背景图像,这样系统就不必执行任何缩放过程。
  2. 将背景图像放在名为“drawable-nodpi”的特殊资源文件夹中。系统不会尝试缩放放在此目录中的图像,因此只执行拉伸过程,并且分配的内存将是预期的。
  3. answer

    中的更多信息

    希望这有帮助。

答案 1 :(得分:3)

我认为我的问题与您的问题相同,此解决方案可以帮助您。

Why does the normal pictures allocated a lot of memory?

你可以使用/ res / drawable-nodpi,背景pictrue只占内存大小的一半。

答案 2 :(得分:2)

为什么在开始新活动(C)时没有完成以前的活动。 然后,您可以覆盖活动C中的onKeyDown方法以启动上一个活动(B)

答案 3 :(得分:0)

我建议在您的活动中覆盖onPause()或onStop()。在那里,您可以释放背景(通过调用layout.setBackgroundDrawable(null))