Android开发之Activity
返回栈
1. 运行状态:位于返回栈栈顶
2. 暂停状态:不在栈顶但仍然可见,例如对话框的出现
3. 停止状态:不在栈顶且完全不可见,但系统仍保留该活动的成员变量和相应的状态
4. 销毁状态:被移除返回栈
生命周期
onCreate():在活动第一次被创建时调用。
onStart():在活动由不可见到可见时调用。
onResume:在活动准备与用户进行交互时调用,此时活动必须位于栈顶并且处于运行状态。
onPause:在该Activity**失去焦点但未被完全覆盖**,系统准备去启动或恢复另一个活动时调用,通常会在该方法中释放一些消耗CPU的资源,以及保存一些重要数据。
onStop:在活动完全不可见时调用。不同于onPause的是若新活动是以对话框的形式启动的那么该活动只会执行onPause方法。
onDestroy:在活动被销毁之前调用。
onRestart:在活动由停止状态变为运行状态之前调用。
需要特别注意的是:
当从activity1跳转到另一个activity2时,会先执行activity1的onPause方法,再执行activity2的onResume方法
以上七种又可归纳为:
完整生存期:onCreate()和onDestroy()之间
可见生存期:onStart()和onStop()之间
前台生存期:onResume()和onPause()之间
防止活动被回收导致信息丢失:
一个活动若处于停止即onPause状态是有可能被系统回收的。
但当系统回收活动时会调用 onSaveInstanceState(Bundle) 回调方法。
该方法提供一个Bundle类型参数,可通过Bundle保存数据。
然后在其它活动的onCreate方法中的Bundle类将它取出来。
异常情况下的生命周期
onSavaInstanceState会在onStop被调用前调用,但可在onPause被调用前调用也可以在onPause被调用后调用。
在Activity被重建时系统会调用onRestoreInstanceState,并且onSavaInstanceState会把保存了数据的Bundle分别传给onCreate和onRestoreInstanceState。
注意
onSavaInstanceState只有在activity异常销毁时才会被调用。