每个应用都有一个主 Activity,比如携程,比如 QQ 阅读等。
Activity 由一个栈来维护,获得当前焦点的 Activity 处于栈顶,
打开新的就会压入新的 Activity,按下回退键就会弹出栈顶元素。(更详细的参考下一篇或者是下下篇)
说到 Activity,不得不说生命周期。
onCreate 首当其冲,onStart 在 onResume 之前(或者是 onRestart),
onPause 出现在 onStop 之前,一个失去焦点,一个完全不可见了。
有个术语叫 recreate activity
1. 当你旋转屏幕时。
2. 开发者模式中,选上不保留活动选项,那么无论是打开新 Activity 再回退或者是点击 home 键再进入,
都会经历一次 recreate activity:
onPause
onSaveInstanceState
onStop
onDestroy
onCreate
onStart
onRestoreInstanceState
onResume
onPause 后的 onSaveInstanceState 用于保留一些值,共 recreate 时调用 onCreate 和 onRestoreInstanceState 使用(为什么会有两个地方,设计时什么初衷?)
我当初就觉得这个机制多此一举,但如果你的 Activity 里有很多 Fragment 的时候,也许很需要这个机制。
super.onSaveInstanceState 默认保存了一些东西,恢复方面与其对应,想用就 super 一下。
某种角度上说,recreate 不可避免,应该设法处理好这个东西,而不是设置旋转屏幕时不销毁 activity 什么的,
因为系统回收资源不随个人意志所转移,天知道什么时候它心情好了。
最后,文档上多次提及,onSaveInstanceState 的调用不被保证,故不要用于持久化。
以上来自:
http://developer.android.com/guide/components/activities.html