Android-背景图像占用太多内存
在我的游戏中,我有3个活动:主菜单->子菜单->游戏屏幕。因此,当用户在游戏屏幕上玩游戏时,前两个活动处于非活动状态,但不会被破坏 每个布局中都有一个漂亮的背景图像。图像本身很小(40k),但在大屏幕上(比如Galaxy平板电脑),它需要几兆的内存。 从前两个活动中删除背景后,第三个活动中的内存使用量从18M降至13MAndroid-背景图像占用太多内存,android,memory,view,background,Android,Memory,View,Background,在我的游戏中,我有3个活动:主菜单->子菜单->游戏屏幕。因此,当用户在游戏屏幕上玩游戏时,前两个活动处于非活动状态,但不会被破坏 每个布局中都有一个漂亮的背景图像。图像本身很小(40k),但在大屏幕上(比如Galaxy平板电脑),它需要几兆的内存。 从前两个活动中删除背景后,第三个活动中的内存使用量从18M降至13M 有没有办法保留背景并恢复所有这些浪费的内存?为什么不在启动新活动(C)时完成之前的活动。 然后您可以覆盖活动C中的onKeyDown方法以启动上一个活动(B)我建议您覆盖活动中的
有没有办法保留背景并恢复所有这些浪费的内存?为什么不在启动新活动(C)时完成之前的活动。
然后您可以覆盖活动C中的onKeyDown方法以启动上一个活动(B)我建议您覆盖活动中的onPause()或onStop()。在那里,您可以释放后台(通过调用layout.setBackgroundDrawable(null))我认为我的问题与您的问题相同,此解决方案将帮助您
您可以使用/res/drawable nodpi,背景图像只占内存大小的一半。由于布局中的背景图像,我遇到了类似的问题。映像内存分配的正常大小应为高度*宽度*4字节(在默认模式ARGB_8888中) 如果您在显示活动时看到和分配了18MB,则肯定存在一些问题。检查是否将背景图像放置在可绘制文件夹中。在这种情况下,系统必须将该图像缩放到屏幕的特定密度,从而导致巨大的内存开销 解决方案:
希望这能有所帮助。我在考虑一个临时解决方案,你只需点击一下,当你在第三页时,删除前两页的背景,然后在返回的过程中恢复它们。启动C时,我如何完成B?我的意思是,我应该在代码中把C.finish()放在哪里?没人..在开始新活动之前,只需调用finish()。您始终可以添加对System.gc()的显式调用。还要确保您的活动本身不再引用背景图像。您好,这是我搜索了几天的解决方案。我缓存了图像,对它们进行解码,但除了这个,它们都不能工作。谢谢。只需将高分辨率图像添加到xxhdpi文件夹