这篇文章主要介绍的是Activity的生命周期
作为Android的四大组件之一,Activity是与开发者最常打交道的组件,那么了解它的生命周期就显得十分有必要了。
先看下整体的生命周期流程图
从图中我们能清晰的看到Activity常用的生命周期有7个,下面对它们进行一一介绍。
7个生命周期分析
(1)onCreate
Activity正在被创建,在这个方法里一般作初始化工作,如加载界面布局资源,数据等。
(2)onRestart
Activity正在重新启动,一般是在Activity从不可见重新变为可见的过程,onRestart()方法会被调用
(3)onStart
Activity正在启动,这时Activity已经创建且可见了,但仍处于后台,此时并未能与用户进行交互。
(4)onResume
表示Activity出现在前台且能与用户进行交互了。
(5)onPause
表示Activity正在停止,此时仍处于前台,只是不能与用户进行交互了。
拓展:官方文档建议可使用该方法来对数据进行存储,如:SharedPreferences,但是不能进行比较耗时的动作。
这里涉及到一个例子:当在MainActivity启动SecondActivity时,MainActivity的生命周期与SecondActivity会如何进行。
结果是MainActivity先进行了onPause方法,SecondActivity再执行onCreate->onStart->onResume,接着MainActivity执行onStop方法。
所以可以验证,为什么在onPause方法中不能进行耗时操作,因为这会影响到新的Activity显示。
(6)onStop
表示Activity正在停止,可在该Activity进行一些回收操作,但不能太耗时。
(7)onDestroy
表示Activity正在销毁,我们同样可在这个方法中进行一些回收操作以及资源释放。
接下来,我们将以上的7个生命周期分类来观察对比
(1)onStart和onStop
这一对生命周期是对于Activity是否可见的角度来回调的
(1)onResume和onPause
这一对生命周期是对于Activity是否能够与用户进行交互(即是否位于前台)角度来回调的
好了,有了以上的了解,我们可以结合一些例子来看看生命周期的流程。
(1)当Activity第一次启动时:onCreate->onStart->onResume
(2)在当前的MainActivity启动SecondActivity时,MainActivity会回调:onPause->onStop方法,但是如果SecondActivity是透明主题,即MainActivity对于用户来讲仍然可见的情况下,MainActivity不会调用onStop的方法
(3)在SecondActivity回到MainActivity时,会回调:onRestart->onStart->onResume方法。
本文是在阅读《Android开发艺术探索》后自己的学习笔记分享,
如有个人的书写错误或理解错误,希望读者能指出,十分感谢!