Android的savedInstanceState

来源:互联网 发布:淘宝地垫 编辑:程序博客网 时间:2024/05/21 17:21

在一个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().








0 0
原创粉丝点击