- 首先Activity的生命周期分为7个部分
- 首先看一下经典视图
- 是不是对整个的有一个大概的了解了别急再看一图
- 下面对照上面的两个图来看一下Activity的生命周期
- 各个方法的具体解释:
- void onCreate(Bundle savedInstanceState)
当Activity被第首次加载时执行。我们新启动一个程序的时候其主窗体的onCreate事件就会被执行
- void onStart() activity变为在屏幕上对用户可见时调用。
onCreate事件之后执行。或者当前窗体被交换到后台后,在用户重新查看窗体前已经过去了一段时间,窗体已经执行了onStop事件,但是窗体和其所在进程并没有被销毁,用户再次重新查看窗体时会执行onRestart事件,之后会跳过onCreate事件,直接执行窗体的onStart事件。
- void onResume() activity开始与用户交互时调用(无论是启动还是重新启动一个活动,该方法总是被调用的)。
onStart事件之后执行。或者当前窗体被交换到后台后,在用户重新查看窗体时,窗体还没有被销毁,也没有执行过onStop事件(窗体还继续存在于Task中),则会跳过窗体的onCreate和onStart事件,直接执行onResume事件。
- void onPause() activity被暂停或收回cpu和其他资源时调用,该方法用于保存活动状态的,也是保护现场,压栈吧!
窗体被交换到后台时执行
- void onStop() activity被停止并转为不可见阶段及后续的生命周期事件时调用。
onPause事件之后执行。如果一段时间内用户还没有重新查看该窗体,则该窗体的onStop事件将会被执行;或者用户直接按了Back键,将该窗体从当前Task中移除,也会执行该窗体的onStop事件。
- void onRestart() 重新启动activity时调用。该活动仍在栈中,而不是启动新的活动。onStop事件执行后,如果窗体和其所在的进程没有被系统销毁,此时用户又重新查看该窗体,则会执行窗体的onRestart事件,onRestart事件后会跳过窗体的onCreate事件直接执行onStart事件。
- void onDestroy() activity被完全从系统内存中移除时调用,该方法被调用可能是因为有人直接调用onFinish()方法或者系统决定停止该活动以释放资源!
Activity被销毁的时候执行。在窗体的onStop事件之后,如果没有再次查看该窗体,Activity则会被销毁
-
示例:
启动Activity:
onCreate-->onStart-->onResume-->Activity运行
当前Activity被其他的Activity覆盖其上或者是被锁屏:
调用onPause方法
当前Activity由被覆盖状态回到前台或者是解锁:
调用onResume方法
当前的Activity跳转到新的Activity界面或者是按home建退回到主屏幕:
调用onStop方法,进入停滞状态
用户回退到此Activity:
onRestart-->onStart-->onResume
Activity的生命周期如同一个人的一生:
从母亲怀孕(onCreate)-->出生(onStart)-->牙牙学语开始记事(onResum)--进入壮年…--进入中年(onPause)-->步入老年(onStop)-->死亡(onDestroy)