Activity数据恢复时移除Fragment数据
来源:互联网 发布:2k17右上角数据没有了 编辑:程序博客网 时间:2024/06/01 09:44
某些场景下(如内存不足),系统销毁 Activity 时会调用 onSaveInstanceState(),而 Fragment 也会在此方法中保存自身的状态。之后用户重新打开对应的 Activity 时,系统则会通过 onCreate(Bundle)或者 onRestoreInstanceState(Bundle) 恢复 Activity 的状态,而 Fragment 的状态会在 onCreate(Bundle) 中恢复。
某些特殊需求下,我们并不需要 Fragment 恢复之前的状态,那么就需要在 Fragment 数据恢复前移除 Fragment 的数据。首先我们来看一下 Activity 中是如何恢复 Fragment 数据的:
123456789101112
static final String FRAGMENTS_TAG = "android:fragments";protected void onCreate(Bundle savedInstanceState) {...if (savedInstanceState != null) {Parcelable p = savedInstanceState.getParcelable(FRAGMENTS_TAG);mFragments.restoreAllState(p, mLastNonConfigurationInstances != null? mLastNonConfigurationInstances.fragments : null);}mFragments.dispatchCreate();...}
从代码中可以看到,Activity 通过读取 savedInstanceState 中对应 key 为 FRAGMENTS_TAG 的 Parcelable 对象的值来恢复 Fragment 的状态。
所以我们可以通过这点入手来阻止 Fragment 状态恢复,代码如下:
原生:
原生 Fragment1
savedInstanceState.remove("android:fragments");
Support 包:
Support 包的 Fragment1
savedInstanceState.remove("android:support:fragments");
阅读全文
0 0
- Activity数据恢复时移除Fragment数据
- activity流程数据除脏
- Activity之数据恢复
- fragment向activity传递数据
- activity给fragment传递数据
- android fragment activity 数据传递
- Activity向Fragment传递数据
- Fragment传递数据到Activity
- Activity,Fragment数据回传
- Fragment与Activity传递数据
- FragMent传递数据到Activity
- Activity向Fragment传递数据
- Activity传数据给fragment
- Activity向Fragment传递数据
- 安卓性能优化之Activity和Fragment通过onSaveInstanceState()保存和恢复数据
- 安卓性能优化之Activity和Fragment通过onSaveInstanceState()保存和恢复数据
- android移除数据
- Activity与Fragment数据传递之Fragment之间获取数据
- yii2框架发送邮件
- Fiori2.0-如何对数据进行筛选。
- MySql 配置
- Unity Shader 光照 小计
- html data-xxxx 特性
- Activity数据恢复时移除Fragment数据
- 时间的处理
- 11-天亮大数据系列教程之搭建web项目
- 数据结构笔记第2章
- 01-windows下git远程拉取项目
- 临时对象的来源
- 系统安全--1、单点登录原理
- Day012
- 欢迎使用CSDN-markdown编辑器