onSaveInstanceState()
Android calls onSaveInstanceState() before the activity becomes vulnerable to being destroyed by the system, but does not bother calling it when the instance is actually being destroyed by a user action (such as pressing the BACK key)
onSaveInstanceState的调用遵循一个重要原则,即当系统“未经你许可”时销毁了你的activity,则onSaveInstanceState会被系统调用,这是系统的责任,因为它必须要提供一个机会让你保存你的数据(当然你不保存那就随便你了)。
打开一个新的Activity也会调用,但如果启动一个透明的Activity的话,不会执行,只会执行onPause,以及恢复时的onResume。
onSaveInstanceState方法和onRestoreInstanceState方法“不一定”是成对的被调用的,onRestoreInstanceState被调用的前提是,activity A“确实”被系统销毁了,而如果仅仅是停留在有这种可能性的情况下,则该方法不会被调用,例如,当正在显示activity A的时候,用户按下HOME键回到主界面,然后用户紧接着又返回到activity A,这种情况下activity A一般不会因为内存的原因被系统销毁,故activity A的onRestoreInstanceState方法不会被执行
另外,onRestoreInstanceState的bundle参数也会传递到onCreate方法中,你也可以选择在onCreate方法中做数据还原。
- 旋转手机的操作会导致先执行页面的销毁生命周期流,然后执行页面的创建生命周期过程流:
onPause -> onSaveInstanceState -> onStop -> onDestory
-> onCreate -> onStart -> onRestoreInstanceState -> onResume
SavedState
是TextView的核心状态存储类。
- .selStart 和 .selEnd 保存光标的起始位置和结束位置,即文本的选中状态
- .frozenWithFocus 保存焦点信息
- .error 保存错误信息
- .editorState 保存可编辑信息
测量模式
UNSPECIFIED:
EXACTLY:
AT_MOST:
网友评论