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

Xun*_*ong 6 java android android-activity android-memory

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

Sha*_*dge 1

根据Android 文档

此外,onSaveInstanceState(Bundle)在将 Activity 置于此类后台状态之前会调用该方法,从而允许您将 Activity 中的任何动态实例状态保存到给定的 Bundle 中,以便稍后在onCreate(Bundle)需要重新创建 Activity 时接收。有关流程的生命周期如何与其托管的活动相关联的更多信息,请参阅流程生命周期部分。请注意,保存持久数据很重要,onPause()因为onSaveInstanceState(Bundle)后者不是生命周期回调的一部分,因此不会在其文档中描述的每种情况下都被调用。

是的onPause(),之前调用过onSaveInstanceState(Bundle)。但onPause()保证被称为活动生命周期的一部分

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