Activity的生命周期

Activity生命周期分为两部分:一种是典型的生命周期,另一种就是异常情况下的生命周期(即指Activity被系统回收或是设备的Configuration发生改变导致的Activity被销毁或是重建)。

典型的生命周期:
(1)onCreate:Activity正在被创建,进行初始化工作。
(2)onStart:Activity正在被启动,这时Activity已经可见,但不处于前台(处于后台),无法交互,即Activity已经显示出来了,但我们还看不到。
(3)onRestart:Activity正在重新启动。一般,Activity从不可见重新变为可见状态时会被调用。
(4)onResume:Activity已经可见,并出现在前台并开始活动。
(5)onPause:Activity正在停止,此时可以做一些存储数据、停止动画的操作,但不能太耗时。因为这回影响到新Activity的显示,onPause必须先执行完,新Activity的onResume才会执行。
(6)onStop:Activity即将停止,此时可以做一些重量级的回收工作,同样不能太耗时。
(7)onDestroy:Activity即将销毁,回收工作和最终的资源释放。

Activity的生命周期_第1张图片
生命周期.png

特殊情况:
(1)当用户打开新的Activty或者切换到桌面的时候,回调:onPause-onStop,但是如果新的Activity采用了透明的主题那么当前的Activity不会回调onStop。
(2)当Activity被系统回收后再次打开,生命周期的毁掉过程和第一次打开一样,但是不代表所有过程都一样。

问1:onStart和onResume、onPause和onStop从描述上来看差不多,对我们来说有什么实质的不同呢?
答:这两个配对的回调分别表示了不同的意义,onStart和onStop是从Activity是否可见这个角度来回调的,onResume和onPause分别是从Activity是否位于前台这个角度来回调的,在实际的使用中没有其他明显的区别。

问2:假设当前Activity A,如果这时用户打开一个新的Activity B,那么B的onResume和A的onPause哪个先执行?
答:A的onPause先执行。(详解见源码)

异常情况下的生命周期
Activity异常销毁将调用onSaveInstanceState和onRestoreInstanceState方法去保存和恢复数据。

你可能感兴趣的:(Activity的生命周期)