Activity的生命周期

时间:2022-01-07 14:43:49

首先看一张经典的Activity生命周期的图

Activity的生命周期

从图中可以看出Activity的生命周期的流程,其中具体的几个过程是:

1.Activity启动时会先后调用onCreate,onStart和onResume方法.

2.当Activity上面有一层透明的Activity时会先后调用当前Activity的onPause方法和新Activity的onCreate,onStart和onResume方法.

3.当Activity上面覆盖了一层不透明的Activity时会先后调用当前Activity的onPause,onStop方法和新Activity的onCreate,onStart,onResume方法.

4.当锁屏时调用当前的Activity的onPause,onStop方法.

5.按返回键时调用当前Activity的onPause,onStop,onDestroy方法.

6.按Home键时调用当前Activity的onPause,onStop方法

7.按Home键后再把进程杀死Activity不调用任何生命周期方法(也就是不调用onDestory方法).

8.当Activity上面有一个AlertDialog时,Activity不调用任何方法.


从整个生命周期来说onCreate和onDestroy是配对的,一个创建一个销毁,并且只可能被调用一次;onStart和onStop是配对的,一个是用户可见时调用,一个用户不可见时调用,可以多次调用;onResume和onPause是配对的,一个是当前的Activity位于前台时调用,一个是当前的Activity不位于前台时调用;

下面是一个测试Activity生命周期的Demo:

这个Demo有三个类MainActivity,StandardActivity,TransparentActivity.

MainActivity是主界面,里面有三个Button可以跳转到StandardActivity、TransparentActivity和打开一个对话框.

TransparentActivity是一个透明的Activity.

StandardActivity是一个不透明的Activity.

三个Activity都重写了所有的生命周期方法及onWindowFocusChanged

测试步骤及结果:

1.启动程序

Activity的生命周期

2.从主界面中启动TransparentActivity

Activity的生命周期

3.在TransparentActivity返回到主界面

Activity的生命周期

4.从主界面中启动StandardActivity

Activity的生命周期

5.从StandardActivity返回到主界面

Activity的生命周期

6.从主界面打开对话框

Activity的生命周期

7.关闭对话框

(同上)

8.在主界面按返回键

Activity的生命周期

9.在主界面按HOME键

Activity的生命周期

10.在进程杀死(不调用任何生命周期方法)

11.在StandardActivity按HOME键

Activity的生命周期

12.在TransparentActivity按HOME键

Activity的生命周期

13.在主界面按HOME键后重新进入主界面

Activity的生命周期

14.在TransparentActivity按HOME键后重新进入TransparentActivity

Activity的生命周期


总结:onResume和onPause方法是在Activity是前台进程时调用;onStart和onStop是在Activity可视进程变成后台进程时调用;onRestart是在Activity未被销毁的情况下Activity从后台进程变成可视进程时调用;