我应该如何处理此活动中的状态?

时间:2011-08-14 20:37:31

标签: android

当我按下后退按钮时,我的应用程序正在运行时,会调用onPause方法,但onSaveInstanceState不会。然后,如果我再次进入我的应用程序,我会收到onCreate的调用,这将重新运行我的初始化逻辑。

我想保存状态,所以当用户再次进入应用程序时我可以恢复它,但是我不知道如何解决这个问题。 onCreate Bundle对我有什么用处,因为onPause我只能通过SharedPreferences保存数据?或者我根本不应该依赖Bundle,只是从SharedPreferences重新初始化?

如何最好地重新初始化?

编辑:我希望如果更改可能会持续到应用程序被杀死。仅适用于应用程序的生命周期。

2 个答案:

答案 0 :(得分:1)

来自onSaveInstanceState API Page

  

如果调用,此方法将在onStop()之前发生。无法保证它是在onPause()之前还是之后发生。

只要您的活动被杀死并且您已正确覆盖了onSaveInstanceState,那么就应该触发它。

至于您最近的编辑(来自同一个API页面)

  

被调用以在被杀死之前从活动中检索每个实例状态,以便可以在onCreate(Bundle)或onRestoreInstanceState(Bundle)中恢复状态(此方法填充的Bundle将被传递给两者)。

onSaveInstanceState最好用于在活动被杀死时保持状态,而不仅仅是为了存储应用程序生命周期的状态。

答案 1 :(得分:0)

从onSaveInstanceState文档引用:

  

不要将此方法与活动生命周期回调混淆,例如   onPause(),在放置活动时始终调用   背景或正在破坏的路上,或onStop()   在破坏前召唤。 onPause()和onStop()的一个例子   被调用,而不是这个方法是用户导航回来的时候   活动B到活动A:没有必要打电话   B上的onSaveInstanceState(Bundle)因为那个特定的实例会   永远不会被恢复,所以系统避免调用它。

这应该回答你的问题:)