首先看一张经典的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.启动程序
2.从主界面中启动TransparentActivity
3.在TransparentActivity返回到主界面
4.从主界面中启动StandardActivity
5.从StandardActivity返回到主界面
6.从主界面打开对话框
7.关闭对话框
(同上)
8.在主界面按返回键
9.在主界面按HOME键
10.在进程杀死(不调用任何生命周期方法)
11.在StandardActivity按HOME键
12.在TransparentActivity按HOME键
13.在主界面按HOME键后重新进入主界面
总结:onResume和onPause方法是在Activity是前台进程时调用;onStart和onStop是在Activity可视进程变成后台进程时调用;onRestart是在Activity未被销毁的情况下Activity从后台进程变成可视进程时调用;