分享

Android的savedInstanceState

 好汉勃士 2021-08-13

在一个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条评论

    发表

    请遵守用户 评论公约

    类似文章 更多