首页 理论教育 区分onCreate()方法中的一个参数和两个参数的区别

区分onCreate()方法中的一个参数和两个参数的区别

时间:2023-06-17 理论教育 版权反馈
【摘要】:当用户使用AS在重写Activity的onCreate()方法时会发现,这里有两个参数,见图4.2。而另一个方法和onCreate一样,可以直接取出前者保存的数据,一般是在onStart()和onResume()之间执行。之所以有两个可以获取到保存数据的方法,是为了避免发生Act跳转而没有关闭,然后不走onCreate()方法,而用户又想取出保存数据。当Activity拥有了持久化的能力,增加的PersistableBundle参数可使上述方法拥有了系统关机后重启恢复数据能力,而且不影响用户其他的序列化操作。

区分onCreate()方法中的一个参数和两个参数的区别

当用户使用AS在重写Activity的onCreate()方法时会发现,这里有两个参数,见图4.2。

图4.2

但正常的参数只有一个,见图4.3

图4.3

这就是5.0给用户们提供的新方法,若要用它,需先在配置文件中为Activity设置一个属性:

android:persistableMode="persistAcrossReboots"

设置完后,Activity就拥有了持久化的能力。通常,可搭配如下两个方法来使用:

publicvoid onSaveInstanceState(Bundle outState,PersistableBundle outPersistentState)

publicvoid onRestoreInstanceState(Bundle savedInstanceState,PersistableBundle persistentState)(www.xing528.com)

相信用户对这两个方法并不陌生,前一个方法会在下述情形中被调用:

(1)点击Home键,回到主页或长按后选择运行其他程序。

(2)按下电源键关闭屏幕。

(3)启动新的Activity。

(4)横竖屏切换时,肯定会执行,因为横竖屏切换的时候会先销毁Act,然后再重新创建。注:当系统“未经用户许可”时销毁了用户的activity,则onSaveInstanceState会被系统调用,这是系统的责任,因为它必须要提供一个机会让用户保存数据(用户可以选择保存,也可以选择不保存)。

而另一个方法和onCreate一样,可以直接取出前者保存的数据,一般是在onStart()和onResume()之间执行。之所以有两个可以获取到保存数据的方法,是为了避免发生Act跳转而没有关闭,然后不走onCreate()方法,而用户又想取出保存数据。

当Activity拥有了持久化的能力,增加的PersistableBundle参数可使上述方法拥有了系统关机后重启恢复数据能力,而且不影响用户其他的序列化操作。另外,API版本需要不低于21,即要5.0以上的版本才有效。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈