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

dop*_*000 3 memory android background view

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

每个布局都有一个漂亮的背景图像。图像本身非常小(40k),但在大屏幕(比如 Galaxy 平板电脑)上,它占用了几兆内存。从前两个活动中去除背景后,第三个活动的内存使用量从 18M 下降到 13M!

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

Mar*_*r81 5

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

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

解决方案:

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

答案中的更多信息

希望这可以帮助。