目录
- 三种情况
- 与Activity的联系
1. 三种情况
Fragment的状态分两种:实例状态和View状态
-
Fragment状态保存入口:
-
Fragment状态恢复入口:
这里的3个保存入口和3个恢复入口刚好相互对应。Fragment状态的保存与恢复有3种情况,这3种情况分别是:
- 入口1对应系统销毁和重建新Fragment实例
- 入口2对应用户自定义销毁和创建新Fragment实例时的状态传递
- 入口3对应同一Fragment实例自身的View状态重建
2. 与Activity的联系
- 这里对应入口1的情况,以翻转屏幕为例进行说明。当一个加载了 Fragment 的 Activity(当然这里是 FragmentActivity)呈现在我们面前,此时翻转屏幕,随后 Fragment 和 Activity 将一起经历重建,在 Activity 的 onSaveInstanceState() 方法中会一起调用 Fragment 的 onSaveInstanceState() 方法,将信息保存在 Bundle 中,其实 onSaveInstanceState() 就是遍历调用了视图中每个 View 的 onSaveInstanceState() 方法,可以通过查看源码的方式知道某个 View 到底保存了一些什么信息。接着 Activity 开始重建,在 Activity 的 onCreate() 方法中会执行重建 Fragment 的逻辑,并把保存的 Bundle 对象传到 Fragment 的 onCreate()、onCreateView()、onActivityCreated() 中
- 入口2和入口3的情况比较少见,暂不考虑