是onSaveInstanceState(Bundle)的方法是在onPause()之后调用的吗?

时间:2015-08-24 07:08:19

标签: java android android-activity android-memory

我是Android的新手,我为初学者读了一本书,说明在系统回收你的onSaveInstanceState(Bundle)之前确保调用Activity。 我尝试了一些测试代码并发现它不正确。我发现每次调用onSaveInstanceState(Bundle)后都会调用onPause()。它与系统回收无关。 我不是很确定,所以问题是:onSaveInstanceState(Bundle)何时被实际调用?

2 个答案:

答案 0 :(得分:2)

我不同意之前的回答 根据{{​​3}}:

  

如果调用,此方法将在onStop()之前发生。没有   保证是否会在onPause()之前或之后发生。

答案 1 :(得分:1)

根据Android Documentation

  

此外,在将活动置于这样的背景状态之前调用方法onSaveInstanceState(Bundle),允许您将活动中的任何动态实例状态保存到给定的Bundle中,以便稍后在{{1如果需要重新创建活动。有关流程生命周期如何与其托管的活动相关联的详细信息,请参阅流程生命周期部分。请注意,在onCreate(Bundle)而不是onPause()中保存持久数据非常重要,因为后者不是生命周期回调的一部分,因此不会在其文档中描述的每种情况下调用。

onSaveInstanceState(Bundle)之前调用onPause()。但onSaveInstanceState(Bundle)保证被称为活动的一部分life cycle

通常在重新创建活动时,例如当您更改设备方向时,如果您未在onPause()文件中指定onSaveInstanceState(Bundle)标记,则会调用android:configChanges