1

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

即使系统关闭虚拟机,这也有效,因为与其他事情相关的崩溃。由于序列化,活动似乎以正确的参数重新开始。

所以问题是,在我的情况下是否需要保存实例状态?没有它似乎工作得很好......还没有遇到任何问题。但也许我遗漏了一些东西,或者没有进行足够的测试。

4

2 回答 2

4

正如您所指出的,如果您Activity被杀死(即由于资源不足),则在重新创建它时,它会传递Intent启动它的原始文件。就您而言,这意味着您可以取回序列化对象。

覆盖onSaveInstanceState对于在执行过程中发生更改Activity(尚未在其他地方持久化)的情况下很重要,您希望维护以防它被杀死。

例如,将成员变量存储在 yourActivity中是危险的,因为当Activity被杀死并重新创建时,除非您将它们存储在Bundlein 中onSaveInstanceState,然后将它们从Bundle传递的 to中恢复onCreate

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

于 2012-07-19T17:32:58.160 回答
0

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

于 2012-07-19T17:32:09.843 回答