[Android] onSaveInstanceState()

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()也是。

阅读更多
文章标签: android
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

[Android] onSaveInstanceState()

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭