我在libgdx论坛上找到了这个帖子,我遇到了同样的问题......
我使用了libGDx并且我在2012年8月制作了一款游戏。在这个游戏中,当我按下手机的待机按钮(并且屏幕关闭)然后再次按下它时,屏幕与它相同在按下待机按钮之前。 在代码中我没有写任何关于它的内容,现在我想制作另一个游戏(在启动画面中使用assetsManager上传资源),当我按下手机的待机按钮然后再按下它游戏重启!所以我再次看到了闪屏
我使用过这样的东西:
@Override
public void resume()
{
super.resume();
this.setScreen(mainMenuScreen);
}
但是不起作用..
任何解决方案?非常感谢!!
PS:这是整个游戏类......
public static Screen gameScreen;
public static Screen mainMenuScreen;
public static Screen chooseTimeScreen;
public static Screen creditsScreen;
public static AssetManager manager = new AssetManager();;
public static SpriteBatch batcher;
boolean create = false;
@Override
public void create()
{
Gdx.app.log("----------------", manager + "");
if (manager == null)
{
manager = new AssetManager();
batcher = new SpriteBatch();
setScreen(new SplashScreen(this, manager));
}
else
{
batcher = new SpriteBatch();
setScreen(mainMenuScreen);
}
}
@Override
public void dispose()
{
super.dispose();
manager.dispose();
batcher.dispose();
if(gameScreen != null) gameScreen.dispose();
if(mainMenuScreen != null) mainMenuScreen.dispose();
if(chooseTimeScreen != null) chooseTimeScreen.dispose();
if(creditsScreen != null) creditsScreen.dispose();
}
答案 0 :(得分:1)
还要检查您在onCreate
方法中正在执行的操作。当屏幕从睡眠状态唤醒时,有时会调用此方法。如果您要重新创建启动画面,或在此处重置它,则会出现问题。
此外,如果不是resume()
onResume()
为避免在onCreate
中重新创建资产管理员,请执行以下操作:
if(manager == null)
manager = new AssetManager();
答案 1 :(得分:1)
解决方案
project.properties文件修改
目标=机器人-14
AndroidManifest.xml文件修改
机器人:configChanges = “键盘| keyboardHidden |取向|屏幕尺寸”
在android:configChanges
答案 2 :(得分:0)
您正在使用static
变量来跟踪需要在应用程序恢复时重新加载的状态。由于Android生命周期的工作方式,“静态”变量引用(通常但不总是)在简历中保持有效,但实际的Android“活动”将被销毁。您应该在简历上重新创建所有资源。 (在你的情况下,我认为你不是在创造它们,但你应该,然后你使用它们,它们从旧的,现在已经死亡的活动中引用陈旧状态。)
有关说明,请参阅Android static object lifecycle。
简短的回答是,使用libGDX,除非你完全确定你在做什么,否则不使用static
变量来跟踪应用程序状态,总是(重新)使用create
方法创建您的州。