当用户使用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以上的版本才有效。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。