0

如果我按下 home 并稍后返回我的应用程序,我会发现状态已被完美保存。但是由于某种原因,如果我锁定手机然后解锁它,我的应用程序已经返回到原始状态栏,这里和那里有一些东西。当我查看日志时,我发现在手机处于锁定状态时调用了 onCreate。因为锁定手机是一件很容易做的事情,所以每次这样做时都重置游戏对用户来说是不可取的。在锁定手机后的几秒钟内,如何至少在更长的时间内避免这种情况?

4

3 回答 3

2

这就是 Android 操作系统的工作方式,它自己决定何时销毁您的视图。为避免丢失此信息,有一种方法可以在您的活动中重新实现

@Override
public void onSaveInstanceState(Bundle outState){
    iGameContent.saveGame(outState);
}

将所有需要的数据保存到 outState 中,并在 onCreate 方法中检查它是新实例还是已保存实例,如下所示:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.game);

    if (savedInstanceState!=null){
        iGameContent.loadGame(savedInstanceState);
    }else{
        // Normal initialization
    }
}

保存/加载到 Bundle 的示例如下:

public void loadGame(Bundle aBundle){
    iBadsHit = aBundle.getInt("iBadsHits",0);
}

public void saveGame(Bundle aBundle){
aBundle.putInt("iBadsHit", iBadsHit);
}
于 2011-12-26T21:23:02.540 回答
1

如果您的日志显示 onCreate 已被调用,则意味着您的应用程序进程已被终止。

你知道 Android Activity 生命周期吗?如果没有,请在此处阅读:Android 活动

于 2011-12-26T21:15:43.447 回答
0

屏幕锁定的行为可能因设备而异。某些事件可能会导致应用程序的破坏。您可以尝试处理其中一些事件以避免这种情况在 AndroidManifest.xml 中指定它:

android:configChanges="keyboardHidden|orientation"

这两个是屏幕锁定中最成问题的。哟可以找到有关此nvidia 文档最后一章的更多信息

于 2013-11-17T12:49:43.017 回答