17

我有一个为结果启动其他活动的活动,因此当结果返回时,该活动可能已被销毁或重新创建。

我已经覆盖了 onSaveInstanceState 以便添加需要保留和恢复的数据。

当 Activity 被销毁并重新创建时,onCreate 会被传递到 savedInstanceState 包;而且onRestoreInstanceState()被调用并传递了同一个包。

那么我应该把从包中提取数据并恢复状态的代码放在哪里呢?在 onCreate 中还是在 onRestoreInstanceState 中?后者是否保证总是被调用?

是否可以在不调用 onCreate 的情况下调用 onRestoreInstanceState?(例如,如果活动停止并重新启动但没有销毁和重新创建)?

4

2 回答 2

11

“除了在 onCreate() 期间恢复状态,您可以选择实现 onRestoreInstanceState(),系统在 onStart() 方法之后调用它。系统仅在存在要恢复的已保存状态时调用 onRestoreInstanceState(),因此您不需要需要检查Bundle是否为NULL"

以下链接非常清楚地解释了重启活动。

安卓指南

于 2014-05-05T12:35:17.193 回答
0

Android 在 onStart( ) 和 onResume( ) 生命周期方法之间调用 onRestoreInstanceState( ) 方法。因此,为了恢复您的活动状态,只需实现 onRestoreInstanceState( ) 方法即可恢复活动状态。

于 2014-05-05T12:35:14.110 回答