Activity生命周期

1,794 阅读2分钟

Activity的生命周期全面分析

典型情况下的生命周期分析

  • onCreate:表示Activity正在被创建,这是生命周期的第一个方法。在这个方法中,我们可以做一些初始化工作,比如调用setContentView去加载界面布局资源、初始化Activity所需数据等。

  • onRestart:表示Activity正在重新启动。一般情况下,当当前Activity从不可见重新变为可见状态时,onRestart就会被调用。比如用户按Home键切换到桌面或者用户打开了一个新的Activity,这时当前的Activity就会暂停,也就是onPause和onStop被执行了,接着用户又回到了这个Activity,就会出现这种情况

  • onStart:表示Activity正在被启动,即将开始,这时Activity已经可见了,但是还没有出现在前台,还无法和用户交互。

  • onResume:onResume的时候Activity才显示到前台。可以交互。

  • onPause:表示Activity正在停止,此时可以做一些存储数据、停止动画等工作,但是注意不能太耗时,因为这会影响到新Activity的显示。

  • onStop:表示Activity即将停止,可以做一些稍微重量级的回收工作,同样不能太耗时。

  • onDestroy:表示Activity即将被销毁,这是Activity生命周期中的最后一个回调,在这里,我们可以做一些回收工作和最终的资源释放。

Activity生命周期的切换过程

image.png

特殊情况

当用户打开新的Activity或者切换到桌面的时候,回调如下:onPause -> onStop。这里有一种特殊情况,如果新Activity采用了透明主题,那么当前Activity不会回调onStop

问题

问题1:onStart和onResume、onPause和onStop从描述上来看差不多,对我们来说有什么实质的不同呢?

onStart和onStop是从Activity是否可见这个角度来回调的,而onResume和onPause是从Activity是否位于前台这个角度来回调的,除了这种区别,在实际使用中没有其他明显区别。

问题2:假设当前Activity为A,如果这时用户打开一个新Activity B,那么B的onResume和A的onPause哪个先执行呢?

须onPause执行完成以后新Activity才能Resume