Android锁屏行为

时间:2011-12-26 21:11:45

标签: android oncreate lockscreen

如果我回家并稍后回到我的应用程序,我会发现该状态已经完好无损。出于某种原因,如果我锁定手机然后解锁它,我的应用程序已经返回到原始状态栏这里和那里的一些东西。当我查看日志时,我发现在手机处于锁定状态时已经调用了onCreate。因为锁定手机是一件非常棘手的事情,所以每次进行游戏重置都是不可取的。如何在锁定手机后至少在几秒钟内避免这种情况?

3 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:1)

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

你知道Android Activity Lifecycle吗?如果没有,请在此处阅读:Android Activities

答案 2 :(得分:0)

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

android:configChanges="keyboardHidden|orientation"

这两个是屏幕锁定中最成问题的。 Yo可以在nvidia document

的最后一章找到更多信息