Android的savedInstanceState

在一个Activity的onCreate()方法中总是会看见一个

 public void onCreate(Bundle savedInstanceState) 

这个savedInstanceState是用来保存Activity的当前状态的。



Activity中有两个方法


onSaveInstanceState():遇到由系统销毁一个Activity时(内存不足,怒按了HOME键,长按HOME键,锁屏,启动一个新的activity屏幕方向切换时),此方法就会被调用,但是用户自己销毁(怒按Back返回键),此方法就不会被调用,毕竟是你主动销毁的,所以系统一傲娇,就不会保存状态。


onRestoreInstanceState():Activity以及被销毁了才会调用,若是仅仅只有可能被销毁但是没有被真正销毁的话,此方法是不会被调用的。假如你点击了HOME键回到桌面,马上又返回到刚才的Activity,这个情况下刚才的Activity并没有被销毁,则此方法没有被执行。


onSaveInstanceState():onPause()或onStop()方法之前调用

onRestoreInstanceState():在onStart()和onPostCreate(Bundle)之间调用。


Activity的其他销毁可能

除了内存不足之外,还有可能因为改变屏幕方向,改变设备的语言设定,键盘的弹出等等都有可能。


在Activity之间的跳转操作的时候,其中有一些为了获得系统中的资源或者某一些信息,一般通过启动Activity中startActivity()和startActivityForResult()函数来进行操作。在这个操作的时候,Activity失去焦点,不可操作,此时,既可以通过OnSaveInstanceState()方法来保存一些暂时的数据。当又回到先前的Activity,重新获取了焦点,系统就触发了onRestoreInstanceState()方法,可以获取失去焦点前的某一些数据。


 public void onCreate(Bundle savedInstanceState) 中savedInstanceState这个对象,当再次获取焦点以后就是通过来保存状态信息的Bundle会同时传给两个method,即onRestoreInstanceState() and onCreate().








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值