现在的位置: 首页 > 综合 > 正文

Activity界面状态保存和恢复

2018年03月31日 ⁄ 综合 ⁄ 共 772字 ⁄ 字号 评论关闭

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

抱歉!评论已关闭.