每一个活动(
Activity )都处于某一个状态,对于开发者来说,是无法控制其应用程
序处于某一个状态的,这些均由系统来完成。
但是当一个活动的状态发生改变的时候,开发者可以通过调用
onXX() 的方法获取到
相关的通知信息。
在实现
Activity 类的时候,通过覆盖( override )这些方法即可在你需要处理的时候
来调用。
onCreate :当活动第一次启动的时候,触发该方法,可以在此时完成活动的初始化工
作。
onCreate 方 法 有 一 个 参 数 , 该 参 数 可 以 为 空 ( null ) , 也 可 以 是 之 前 调 用
onSaveInstanceState ()方法保存的状态信息。
onStart :该方法的触发表示所属活动将被展现给用户。
onResume :当一个活动和用户发生交互的时候,触发该方法。
onPause :当一个正在前台运行的活动因为其他的活动需要前台运行而转入后台运行
的时候,触发该方法。这时候需要将活动的状态持久化,比如正在编辑的数据库记录等。
onStop :当一个活动不再需要展示给用户的时候,触发该方法。如果内存紧张,系统
会直接结束这个活动,而不会触发
onStop 方法。 所以保存状态信息是应该在 onPause 时做,
而不是
onStop 时做。活动如果没有在前台运行,都将被停止或者 Linux 管理进程为了给新的
活动预留足够的存储空间而随时结束这些活动。因此对于开发者来说,在设计应用程序的时
候,必须时刻牢记这一原则。在一些情况下,
onPause 方法或许是活动触发的最后的方法,
因此开发者需要在这个时候保存需要保存的信息。
onRestart :当处于停止状态的活动需要再次展现给用户的时候,触发该方法。
onDestroy :当活动销毁的时候,触发该方法。和 onStop 方法一样,如果内存紧张,系
统会直接结束这个活动而不会触发该方法。
onSaveInstanceState :系统调用该方法,允许活动保存之前的状态,比如说在一串字符
串中的光标所处的位置等。
通常情况下,开发者不需要重写覆盖该方法,在默认的实现中,已经提供了自动保存
活动所涉及到的用户界面组件的所有状态信息。
Activity 栈
上面提到开发者是无法控制
Activity 的状态的,那 Activity 的状态又是按照何种逻辑来
运作的呢?这就要知道
Activity 栈。