Activity用来保存和恢复状态的方法如下:
protected void onSaveInstanceState(Bundle outState)
Activity被系统杀死时调用,如屏幕横竖屏切换Activity被销毁再重建等。
(1)在Activity被覆盖或退居后台之后,系统资源不足将其杀死,此方法会被调用;
(2)在用户改变屏幕方向时,此方法会被调用;
(3)在当前Activity跳转到其他Activity或者按Home键回到主屏,自身退居后台时,此方法会被调用。
第一种情况我们无法保证什么时候发生,系统根据资源紧张程度去调度;第二种是屏幕翻转方向时,系统先销毁当前的Activity,然后再重建一个新的,调用此方法时,我们可以保存一些临时数据;第三种情况系统调用此方法是为了保存当前窗口各个View组件的状态。onSaveInstanceState的调用顺序是在onPause之前。
protected void onRestoreInstanceState(Bundle savedInstanceState)
Activity被系统杀死后重新创建时调用,如屏幕横竖屏切换Activity被销毁再重建等。
(1)在Activity被覆盖或退居后台之后,系统资源不足将其杀死,然后用户又回到了此Activity,此方法会被调用;
(2)在用户改变屏幕方向时,重建的过程中,此方法会被调用。
我们可以重写此方法,以便可以恢复一些临时数据。onRestoreInstanceState的调用顺序是在onStart之后。
public void onWindowFocusChanged(boolean hasFocus)
Activity窗口获得或失去焦点时被调用,例如创建时首次呈现在用户面前;当前Activity被其他Activity覆盖;当前Activity转到其他Activity或按Home键回到主屏,自身退居后台;用户退出当前Activity。