关闭

[Android] onSaveInstanceState()

标签: android
671人阅读 评论(0) 收藏 举报

onSaveInstanceState()用以保存activity实例的状态,以便在系统kill掉该activity后需要重建该activity时可以使用onRestoreInstanceState()重建状态。注意:如果只是被stop,则无需重建,因为实例还在内存。

何时会调用?

答:最佳的答案是系统要把该activity置于“危险”状态时,即会调用。如按下home键后;按下recents键后。或直接需要recreate这个activity的时候,如由portrait mode转为landscape mode的时候。

何时不会调用?

答:在系统明确用户不需要返回该activity时,不会调用,如按下back键。

与其它回调函数的调用顺序

答:在onStop()之前,Google官方文档说有可能在onPause()之前。实际测试,一般是onPause() -> onSaveInstanceState() -> onStop()。

和onPause()有何不同

onSaveInstanceState() 用以保存每个实例的状态,所以应保存的是用以重建UI的信息。由于不是一定会调用,所以,一定不可以保存持久影响的信息,如写入数据库,相反,应使用onPause()。

使用注意点

1. 一般无需重写该回调函数,因为该方法的实现会自动保存所有用户界面控件的状态(需要给每个控件一个唯一的ID,即属性android:id)。

2. 在有自定义的控件时,或者需要保存其他不是界面空间状态的值,可重写该回调函数时,一定要注意要先调用父类的onSaveInstanceState(),再实现自己的代码,即super.onSaveInstanceState()。同理,onRestoreInstanceState()也是。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:12482次
    • 积分:257
    • 等级:
    • 排名:千里之外
    • 原创:11篇
    • 转载:0篇
    • 译文:0篇
    • 评论:4条
    最新评论