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