在我的游戏中,我有3个活动:主菜单 - >子菜单 - >游戏画面。因此,当用户在游戏屏幕中玩游戏时,前两个活动处于非活动状态,但不会被破坏。
每个布局都有一个很好的背景图像。图像本身非常小(40k),但在大屏幕(比如Galaxy平板电脑)上,它需要几兆的内存。 从前两个活动中删除后台后,第三个活动中的内存使用率从18M降至13M!
有没有办法保留背景并恢复所有浪费的内存?
答案 0 :(得分:4)
由于布局中的背景图片,我遇到了类似的问题。图像的内存分配的正常大小应为height * width * 4字节(在模式ARGB_8888中,默认模式)。
如果您在展示活动时看到并分配了18MB,则必定存在一些问题。检查是否将背景图像放在drawable文件夹中。在这种情况下,系统必须将该图像缩放到屏幕的特定密度,从而导致大量内存开销。
解决方案:
希望这有帮助。
答案 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))