对Bundle savedInstanceState, PersistableBundle persistentState的详解

今天在我写demo时,发现不管怎样,布局都加载不上。我就纳闷了,这代码也没问题啊,咋就布局加载不上呢?找来找去,原来是onCreate多了一个参数,导致布局加载不上。接下来我便讲讲onCreate的这两个参数是什么意思。

首先我们先看看onCreate带两个参数的方法:

public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
    super.onCreate(savedInstanceState, persistentState);
}

接下来便是两个参数的详细讲解:

1、首先第一个参数:当一个Activity的生命周期结束前,会调用onSaveInstanceState()这个回调函数来保存状态,保存的类型便是Bundle类型:

protected void onSaveInstanceState(Bundle saveInstanceState) {
    super.onSaveInstanceState(saveInstanceState);
}
然后,当我们再次启动这个Activity时,便会通过onCreate的参数savedInstanceState来获取之前保存的数据状态。所以像电子书、游戏之类有进度的程序在异常退出之前,便会通过onSaveInstanceState()这个回调函数来保存当前的进度。然后当再次打开程序的时候,onRestoreInstanceState()与onCreate()便会接收到saveInstanceState这个参数,然后便会调用:if(null!=savedInstanceState)

...

来读取上次的进度。

2、然后是第二个参数:我们先来看看PersistableBundle是什么吧:

A mapping from String values to various types that can be saved to persistent and later restored.

可以看出它是和Bundle(A mapping from String values to various Parcelable types.)差不多的东西。

但它比Bundle多了can be saved to persistent and later restored,也就是说它可以持久化保存并且可以恢复。若在AndroidManifest中注册Activity是加上android:persistableMode="persistAcrossReboots"这个属性,便可以使你的Activity储存一些持久化的数据。

至此,onCreate的两个参数便讲解完毕,若对您有所帮助的,请不吝点赞。若有问题的请及时写出评论,我会及时解答,谢谢!


                
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值