-
Notifications
You must be signed in to change notification settings - Fork 42
Android(1): Activity生命周期中的onSaveInstanceState
clarkehe edited this page Mar 23, 2016
·
1 revision
记录下Activity生命周期中的onSaveInstanceState(Bundle outState)
onSaveInstanceState与onRestoreInstanceState的作用:
在资源紧张的情况下,系统会选择杀死一些处于非栈顶的Activity来回收资源。 为了能够让这些可能被杀死的Activity能够在恢复显示的时候状态不丢失,所以需要在Activity从栈顶往下压的时候提供onSaveInstanceState的回调用来提前保存状态信息。
而onRestoreInstanceState则是在这个Activity真的回收掉之后的恢复显示阶段用来恢复之前保存的数据。
onSaveInstanceState与onRestoreInstanceState的调用时机:
只要某个Activity是做入栈并且非栈顶时(启动跳转其他Activity或者点击Home按钮),此Activity是需要调用onSaveInstanceState的, 如果Activity是做出栈的动作(点击back或者执行finish),是不会调用onSaveInstanceState的。
只有在Activity真的被系统非正常杀死过,恢复显示Activity的时候,就会调用onRestoreInstanceState。
-
- Activity进入后台(如按HOME键,Start另一个Activity),并且有可能恢复(onResume),就会调用onSaveInstanceState。调用onSaveInstanceState只是为了万一系统回收,不一定会有用上。
-
- onSaveInstanceState一般是在onStop之前调用,但与onPause的调用顺序不一定。