睡眠后重新加载应用程序

时间:2013-02-02 12:56:54

标签: android libgdx

我在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();
}

3 个答案:

答案 0 :(得分:1)

还要检查您在onCreate方法中正在执行的操作。当屏幕从睡眠状态唤醒时,有时会调用此方法。如果您要重新创建启动画面,或在此处重置它,则会出现问题。

此外,如果不是resume()

,您的代码会说明onResume()

为避免在onCreate中重新创建资产管理员,请执行以下操作:

if(manager == null)
    manager = new AssetManager();

答案 1 :(得分:1)

解决方案

  1. project.properties文件修改

    目标=机器人-14

  2. AndroidManifest.xml文件修改

    机器人:configChanges = “键盘| keyboardHidden |取向|屏幕尺寸”

    在android:configChanges

  3. 中添加screenSize

答案 2 :(得分:0)

您正在使用static变量来跟踪需要在应用程序恢复时重新加载的状态。由于Android生命周期的工作方式,“静态”变量引用(通常但不总是)在简历中保持有效,但实际的Android“活动”将被销毁。您应该在简历上重新创建所有资源。 (在你的情况下,我认为你不是在创造它们,但你应该,然后你使用它们,它们从旧的,现在已经死亡的活动中引用陈旧状态。)

有关说明,请参阅Android static object lifecycle

简短的回答是,使用libGDX,除非你完全确定你在做什么,否则使用static变量来跟踪应用程序状态,总是(重新)使用create方法创建您的州。