2011-08-14 33 views
0

当我按下后退按钮,而我的应用程序运行时,方法被调用,但onSaveInstanceState不是。然后,如果我再次输入我的应用程序,我会收到一个致电onCreate的电话,它将重新运行我的初始化逻辑。我应该如何处理此活动中的状态?

我想保存状态,所以我可以在用户再次进入应用程序时恢复它,但我不知道如何去做这件事。 onCreateBundle对我有什么用,因为在我只能通过SharedPreferences保存数据?或者我不应该依赖Bundle,只需从SharedPreferences重新初始化?

怎样才能最好地处理重新初始化?

编辑:我宁愿如果更改可以持续,直到应用程序被杀害。仅适用于应用程序的生命周期。

回答

1

API Page的onSaveInstanceState

如果调用,会发生这种方法的onStop()之前。无法保证它是否会在onPause()之前或之后发生。

只要您的活动正在被杀死,并且您已正确覆盖onSaveInstanceState,那么它应该被解雇。

至于你最近被杀害,使国家能够在的onCreate(捆绑)或onRestoreInstanceState(恢复之前编辑(来自同一个API页)

调用,从活动中检索每个实例的状态Bundle)(由此方法填充的Bundle将传递给两者)。

onSaveInstanceState最适合在活动被终止时保持状态,而不仅仅是用于存储应用程序生命周期的状态。

0

从的onSaveInstanceState文档引用:

不要混淆此方法具有活性的生命周期回调如 的onPause()中,当一个活动被放置在 背景或在它的途中,其总是被调用销毁,或onStop()这是销毁之前调用的 。当onPause()和onStop()被调用时的一个示例,而不是此方法是当用户从 活动B返回到活动A时:不需要在B上调用 onSaveInstanceState(Bundle),因为该特定实例将永远不会恢复,因此系统不会调用它。

这应该回答你的问题:)

相关问题