我有一个带有4个屏幕的用户界面,我的应用程序非常沉重,并且以大约250MB的Ram使用率启动,在我在屏幕之间来回切换几次后,它快速上升,在崩溃之前高达800MB Ram。
这就是我处理的方式:
每个屏幕extends
主屏幕,我有这种处理方法:
@Override
public void dispose()
{
stage.dispose();
System.out.println("Disposing Main Screen");
}
设置新屏幕时,我这样做:
dispose();
game.setScreen(new HighScoreScreen(game));
现在我在启动时使用AssetManager
加载了所有资源,这意味着我不会卸载/删除屏幕中的任何资源,因为这会导致下一个屏幕显示一个空黑框而不是被处置的资产。但这是一个问题吗?我有很多资源,例如8个不同的BitmapFonts
每次加载一个扩展MainScreen的新屏幕时都会初始化。但是,如果我尝试处理这些,我下次尝试初始化时会出错。
剩下的唯一可以解决的问题是纹理/字体,这是导致我问题的原因吗?我应该为每个屏幕加载/卸载吗?这似乎会导致很多用户遇到错误的用户体验。
答案 0 :(得分:0)
正如@TomGrill Games所说,您应该初始化一次资源,并在主类中使用它们。您可能有一个资源类,在主类中初始化,并从那里调用您的资源。您的代码可能类似于:
game.setScreen(game.mainScreen);
或
game.setScreen(game.resources.mainScreen);
你也会用你的声音和其他资源做到这一点。