使用savedInstanceState和onSaveInstanceState很重要吗?

时间:2012-07-19 17:26:00

标签: android android-intent parameters

我有一个只支持肖像模式的应用程序。我正在使用序列化传递我的所有参数,通过意图传递 - intent.putExtra() ant然后在onCreate() - getIntent().getExtras().getX(MY_PARAM_NAME) ...

即使系统因为与其他事情相关的崩溃而关闭VM,这仍然有效。由于序列化,活动似乎再次使用正确的参数启动。

所以问题是,在我的情况下保存实例状态是否必要?没有它似乎运作良好......没有任何问题。但也许我错过了一些东西,或者测试不够。

2 个答案:

答案 0 :(得分:4)

正如您所指出的,如果您的Activity被扼杀(即由于资源不足),则在重新创建时,会传递启动它的原始Intent。在您的情况下,这意味着您将获得序列化对象。

覆盖onSaveInstanceState对于在Activity执行期间发生变化的情况(在其他地方尚未保留)的情况非常重要,以防万一它被杀死。

例如,将Activity中的成员变量存储在Activity被杀死并重新创建时是危险的,除非您将它们存储在Bundle onSaveInstanceState中,并且然后将其从传递给Bundle的{​​{1}}恢复。

更新:测试实施该方法的必要性的一个好方法是强制Android在您离开后立即终止您的活动。然后,运行您的应用程序,看看是否有任何问题。您可以使用模拟器上的Dev Tools App或ICS中的设置 - >执行此操作。开发人员选项,并选中“不要保持活动”。

答案 1 :(得分:0)

onSaveInstanceState()onRestoreInstanceState()仅在需要重新创建活动时由Android显式调用,通常在配置更改后(例如更改方向)。