Activity界面状态保存和恢复
当系统内存不紧张且不销毁后天运行的Activity时,我们可以通过onPause()函数保存Activity将进入后天之际时的状态和数据。当Activity从后台再次回到前台时,通过调用onRestart恢复界面状态。不过,当系统杀死退居后台的Activity时,再次启动这个Actiivity,它自身的一些界面状态就重新初始化,并不能是它被系统杀死之前的状态。不过,系统为我们提供了这个函数onSaveInstanceState()和onRestoreInstanceState()。当系统要销毁Activity时,它会调用这个onSavaInstanceState函数,当我们想要恢复销毁之前的Activity状态时,我们可以调用onRestoreInstanceState()函数,在里面取得系统销毁Activity之前时保存的状态和数据。下面就通过横屏和竖屏变化来演示Activity被系统杀死在重启Acitivity的情况,以展示这两个函数的作用。
手机处于竖屏时,正常启动Activity。当手机从竖屏变为横屏时,Activity生命周期函数调用如下 :
从上图可以知道,MainActivity在执行onDestroy函数之前,函数onSaveInstanceState()这里可以通过Bundle对象保存Activity状态。
当调用Activity再次重启时,onRestoreInstanceState()函数被回调。我们可以这个函数里面的Bundle对象拿到onSaveInstanceState()保存的数据和状态。
从横屏转换竖屏时,Activity生命周期函数执行时相同。
测试代码链接: http://download.csdn.net/detail/js331455217/8136977