什么时候用OnSaveInstanceState在系统回收当前Activity之前会调用onSaveInstanceState,按back键此方法不会调用,按Home键会调用。 onSaveIn...
什么时候用OnSaveInstanceState
在系统回收当前Activity之前会调用onSaveInstanceState,按back键此方法不会调用,按Home键会调用。
onSaveInstanceState()方法只适合保存瞬态数据, 比如UI控件的状态, 成员变量的值等,而不应该用来保存持久化数据,持久化数据应该当用户离开当前的activity时,在onPause()中保存(比如将数据保存到数据库或文件中)。说到这里,还要说一点的就是在onPause()中不适合用来保存比较费时的数据,所以这点要理解。
在做企业级应用非常重要。
为什么需要用到Activity状态保存,如何用?
eg,正在打字,来了电话,系统是否内存而没有保存;屏幕从竖屏切换横屏,重新start而没有保存输入内容。
期望没有退出的情况下切换能保持状态连贯。
熟悉onSaveInstanceState,onRestoreInstanceState
onSaveInstanceState保存,类似建立hash表,onCreate中的Bundle参数恢复。2.0之后可以onRestoreInstanceState恢复
系统在回收当前Activity之前会调用onSaveInstanceState ;home,back两个键不会调用此方法。被来点打断这种会调用。
(
百度补充:
这个“容易被系统销毁”包括以下几种情况:
(1)当用户按下HOME键的时候
(2)长按HOME键,选择运行其它程序的时候
(3)按下电源键的时候
(4)从一个Activity启动到另一个Activity (5)屏幕方向切换时,例如从横屏切换到竖屏(这个时候Activity是真正被销毁了)
)
熟悉preference保存信息及恢复信息
借助activity lifecycle+preference来完成状态保存。onPause()onResume()没有bundle参数,通过getPreferences()保存。
横竖屏幕切换,按了home、back后再回来。保存为xml文件
如何选择到底用SaveInstance还是用preference
学员评论
Dingo妹2014-07-09
Dingo妹2014-07-09
Dingo妹2014-07-09
我心飞翔_6662013-09-08
你感兴趣的课程
扫一扫 关注好知微信