作为Android四大组件之一的activity 在开发的过程中,我们对其使用必不可少。所谓想要熟练使用一个知识点,必先深入了解其原理。那么今天,我们就来聊聊关于Activity的生命周期吧~
一、什么是activity?
1.通俗的说,一个activity就是一个屏幕。用于用户与应用程序之间进行交互。
2.activity之间通过intent进行通信。
3.当你每创建一个activty,都必须要在AndroidManifest.xml配置文件中声明,否则将无法识别并执行。
二、activity的生命周期
首先上一张图。相信这张图很多人都看见过,但是可能不是特别的理解,下面我就来一一介绍。
-
onCreate()。每个活动中我们都重写了这个方法,所以大家应该都挺熟悉的。这个方法用于完成活动的初始化操作,比如加载布局、绑定事件等。
-
onStart()。这个方法在活动由不可见变为可见的时候调用。
-
onResume()。这个方法在活动准备好与用户进行交互的时候调用。
-
onPause()。这个方法在系统准备去启动或者恢复另一个活动的时候调用。
-
onStop()。这个方法在活动完全不可见的时候调用。
注:它与onPause()的主要区别在于,如果启动的新活动是一个对话框式的活动,那么onPause()方法会得到执行,而onStop()方法并不会执行。 -
onDestroy()。这个方法在活动被销毁之前调用,之后活动的状态也会变成销毁状态。
-
onRestart()。这个方法在活动由停止状态变为运行状态调用,也就是活动被重新启动了。
相信你看到这些可能还是有点懵逼~~ 那我们直接上代码
三、代码演示
如图 我创建了两个activity 以及其相对应的布局文件。
NormalActivity主要是输出一段话,DialogActivity也是如此,但是在AndroidManifest中,我给它设置了一个对话框的主题格式,已验证onStop()与onPause()方法的不同。
再贴一个回调方法的代码:
其他代码较为简单,就不一一贴图了。
四、演示分析
现在我们运行下程序:
观察logcat中的打印日志:
当MainActivity第一次被创建的时候,它会依次执行onCreate()、onStart()、onResume()方法,然后我们点击第一个按钮:
由于执行了另一个活动NormalActivity 所以onPause()和onStop()方法会执行。这时候我们按下返回键返回MainActivity:
由于之前MainActivity处于停止状态,所以返回后,onRestart()方法会执行,然后依次执行onStart()和onResume()方法。但是这个时候onCreate()方法不会重新调用,因为MainActivity没有被重新创建。
然后我们点击第二个按钮,启动DialogActivity:
弹出一个对话框。这时候我们观察logcat:
这个时候我们发现,onPause()方法得到执行,onStop()方法没有执行,因为它仅仅只是一个标题框,并没有完全的遮盖MainActivity,所以MainActivity只是进入了暂停状态,并没有停止。这时候我们再点击返回键:
只会执行onResume()方法,和我们想的一样。
最后我们在MainActivity页面点击Back按钮,退出程序:
依次执行onPause()、onStop()、onDestroy()方法,最后销毁MainActivity。
这样一个完整的Activity生命周期,我们就体验了一遍呀~
感觉也是没有什么特别难的点,自己亲手敲一遍代码,会对这个过程印象更加深刻。
如果你还有什么不明白的地方,请在评论区留言,我们可以探讨一下,共同进步。