除了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方法中做数据还原。