![](/img/trans.png)
[英]Android PendingIntent and how I should handle its action in the main Activity
[英]How should I handle state in this Activity?
当我在我的应用程序运行时按下后退按钮时,会调用onPause
方法,但不会调用onSaveInstanceState
。 然后,如果我再次进入我的应用程序,我会收到对onCreate
的调用,这将重新运行我的初始化逻辑。
我想保存 state,所以当用户再次进入应用程序时我可以恢复它,但是我不确定如何 go 关于这个。 onCreate
的Bundle
对我有什么用处,因为在onPause
中我只能通过SharedPreferences
保存数据? 或者我根本不应该依赖Bundle
,而只是从SharedPreferences
重新初始化?
如何最好地处理重新初始化?
编辑:如果更改只能持续到应用程序被终止,我会更愿意。 仅适用于应用程序的生命周期。
从 onSaveInstanceState API 页面
如果调用,此方法将在 onStop() 之前发生。 无法保证它会在 onPause() 之前还是之后发生。
只要您的活动被杀死并且您正确地覆盖了 onSaveInstanceState ,那么它就应该被解雇。
至于您最近的编辑(来自同一个 API 页面)
调用以在被杀死之前从活动中检索每个实例 state,以便可以在 onCreate(Bundle) 或 onRestoreInstanceState(Bundle) 中恢复 state(由此方法填充的 Bundle 将传递给两者)。
onSaveInstanceState 最适合用于在活动被杀死时持久化 state,而不仅仅是在应用程序的生命周期内存储 state。
引用 onSaveInstanceState 文档:
不要将此方法与活动生命周期回调混淆,例如 onPause(),它总是在活动被放置在后台或销毁的途中调用,或者在销毁之前调用的 onStop()。 当用户从活动 B 导航回活动 A 时调用 onPause() 和 onStop() 而不是此方法的一个示例:不需要在 B 上调用 onSaveInstanceState(Bundle),因为该特定实例将永远不会被恢复,因此系统避免调用它。
这应该回答你的问题:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.