OnCreate Bundler参数什么时间不为空

很多人会问 Activity-->onCreate方法的参数Bundler为什么总是空呢?

好,那么我们开始查看API文档,解释为 If the activity is being re-initialized after previously being shut down then this Bundle contains the data it most recently supplied in onSaveInstanceState(Bundle)Note: Otherwise it is null.

就是,如果当前activity 是被上次关闭后重新初始化,那么这个bundler对象包含了最近在onSaveInstanceState(Bundle)提供的数据。否则,它会是空的。

也就是说方法onSaveInstanceState(Bundle)调用后,就会将bundler对象赋值,然后调用oncreate的时候用的就是onSaveInstanceState(Bundle)方法中的bundler, 所以它就不会是空了。

那又有另一个问题了,onSaveInstanceState(Bundle)方法是由系统回调的,系统什么时间会回调这个方法呢?

好,现在来回答这个问题,这个方法是系统在需要异常关闭activity时(如内存剩余较少,需要关闭activiy释放内存 或者点击Home键直接退到launcher时也会调用),提供保存当前activity数据的方法。

API文档上说,下面两种情况不会调用此方法,假设我们由Activity A 启动 Activity B,

1、A界面不可见,处于onStop的状态,但是不会调用onSaveInstanceState(Bundle),因为A虽然不可见了,但是A没有被异常关闭,A是完好无缺的。

2、如果这时我们点击返回键,那么将会关闭B界面,这时仍然不会调用onSaveInstanceState(Bundle),因为这个B的实例将不会被系统保存,所以系统没有必要回调此方法。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值