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