ANDROID基础ACTIVITY篇之ACTIVITY的生命周期(二)

时间:2023-03-09 05:05:15
ANDROID基础ACTIVITY篇之ACTIVITY的生命周期(二)

除了Activity的七大生命周期方法外外,还有两个相当重要的方法需要大家熟记那就是onSavelnstanceState()和onRestoreinstanceState()。

那么什么时候会调用这两个方法呢?

有这么几种情况,会使onSaveInstanceState方法执行

1,当Activity 被系统而非人为的销毁前

2,当用户按下HOME键时。 
这是显而易见的,系统不知道你按下HOME后要运行多少其他的程序,自然也不知道activity A是否会被销毁,故系统会调用onSaveInstanceState,让用户有机会保存某些非永久性的数据。

3,长按HOME键,选择运行其他的程序时。 

4,按下电源按键(关闭屏幕显示)时。 

5,从activity A中启动一个新的activity时。

6,屏幕方向切换时,例如从竖屏切换到横屏时。 

总而言之,onSaveInstanceState的调用遵循一个重要原则,那就是Activity是被系统而非人为的销毁,在这之前系统通过调用这个方法来让用户保存一些数据。

至于onRestoreInstanceState方法,它是用来对系统销毁后并重新创建的Activity进行数据还原操作的,数据一般保存在Bundle对象中。

需要注意的是,onSaveInstanceState方法和onRestoreInstanceState方法“不一定”是成对的被调用的,例如,当正在显示activity A的时候,用户按下HOME键回到主界面,然后用户紧接着又返回到activity A,这种情况下activity A一般不会因为内存的原因被系统销毁,故activity A的onRestoreInstanceState方法不会被执行。 
另外,onRestoreInstanceState的bundle参数也会传递到onCreate方法中,你也可以选择在onCreate方法中做数据还原。

 ANDROID基础ACTIVITY篇之ACTIVITY的生命周期(二)