美文网首页
Fragment状态保存与恢复

Fragment状态保存与恢复

作者: blingblingson | 来源:发表于2017-09-05 21:21 被阅读223次

目录

  1. 三种情况
  2. 与Activity的联系

1. 三种情况

  1. Fragment的状态分两种:实例状态和View状态

  2. Fragment状态保存入口:


  3. Fragment状态恢复入口:


  4. 这里的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的情况比较少见,暂不考虑

参考文章

相关文章

网友评论

      本文标题:Fragment状态保存与恢复

      本文链接:https://www.haomeiwen.com/subject/rtppjxtx.html