android学习笔记:activity(7)保存与Fragment相关的状态

1.各种android系统操作都会影响Fragment的状态,为了确保用户的状态得到各种保存,Android框架会自动保存和恢复Fragment和返回栈堆。

下表列出了会导致Fragment丢失状态的操作,以及各种类型的状态是否会在发生这些更改后持续存在。表中提及的状态类型如下:

1.变量:Fragment中的局部变量

2.视图状态:Fragment中一个或多个视图所拥有的任何数据

3.SaveState:此Fragment实例固有的数据,这些数据应保存在onSaveInstanceState()中。

4.NonConfig:从外部来源(如服务器或本地代码库)提取的数据,或提交后发送到服务器的用户创建的数据。

通常,将变量视为与SaveState相同,但下表对两者进行了区分,以说明各种操作会产生的影响。

*可以使用ViewModel的已保存状态模块在进程终止后保留NonConfig状态

5.视图需要一个ID才能保留其状态。此ID在Fragment及其视图层次结构中必须是唯一的。没有ID的视图无法保留其状态

6.可以使用Fragment.onSaveInstanceState(Bundle)保留轻松序列化的数据。与Activity.onSaveInstanceState(Bundle)类似,放置在捆绑包中的数据会在配置更改以及进程终止和重行创建后保留,并且在Fragment的onCreate(Bundle)、onCreateView(LayoutInflater,ViewGroup、Bundle)和onViewCreated(View,Bundle)方法中可用

注意:仅当Fragment的宿主调用它自己的onSaveInstanceState(Bundle)时,才会调用onSaveInstanceState(Bundle)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值