面试的时候我们总会被问到Activity的生命周期。我去呀,那么多怎么记得住呀,今天这一篇是妈妈不担心系列的首篇,通过一些细节的讲解,面试的时候可以再也不用担心面试官问生命周期了。
带着问题去看Activity可以更加方便我们去理解它。
问题1 正常情况下Activity的生命周期
问题2: AActivity启动BActivity,他们的生命周期?
问题2:透明主题的Activity生命周期
问题3:异常情况下Activity的生命周期(Configuration发生改变)
问题4:多进程启动Activity的生命周期
问题5: 不同启动模式下Activity的生命周期
简单介绍一下Activity的生命周期方法
(1) onCreate:表示Activity正在被创建,这是生命周期的第一个方法。在这个方法中,我们可以做一些初始化工作,比如调用setContentView去加载布局文件,初始化Activity所需的数据。
(2)onRestart:表示Activity正在重启。一般情况下,当当前Activity从不可见变为可见状态时,onRestart就会被调用。这种场景一般是用户行为导致的,比如用户按Home键切换到桌面,或者打开一个新的Activity,这时当前的Activity就会暂停,也就是onPause和onStop会被调用,接着用户又回到这个Activity,就会出现这种情况。
(3)onStart:表示Activity正在被启动,即将开始,这时Activity已经可见了,但还是没有出现在前台,还无法和用户交互。这个时候可以理解为Activity已经显示出来了,但是我们还看不到。
(4)onResume:表示Activity已经可见了,并且出现在前台并开始活动。要注意这个和onStart的对比,onStart和onResume都表示Activity已经可见,但是onStart的时候Activity还在后天,onResume的时候已经到前台了。
(5)onPause:表示Activity正在停止,正常情况下,紧接着onStop会被调用。在特定的情况下,如歌这个时候快速的再回到这个Activity,那么onResume会被调用。此时可以做一些数据存储、停止动画等工资,但注意到不能太耗时,因为这会影响到新的Activity的显示,onPause必须先执行,新的Activity才会执行onResume.
(6)onStop:表示Activity即将停止,可以做一些稍微重量级的回收工作,同样不能太耗时。
(7)onDestory:表示Activity即将被销毁,这时Activity生命周期中的最后一个回调,在这里,我们可以做一些回收工作和最终的资源释放。
问题1:正常情况下Activity的生命周期?
- 针对一个Activity,第一次启动,调用流程:onCreate->onStart->onResume.
- 当用户打开新的Activity或者切换到桌面时,调用流程:onPause->onStop
- 当用户再次回到Activity时,调用流程:onRestart->onStart->onResume.
- 当用户按back键回退时,调用流程:onPause->onStop->onDestroy
- 当Activity被系统回收后再次打开,生命周期回调过程和第一条一致,注意只是生命周期方法一样,不代表所有过程都一样。(再异常状态时会讲)
从整个生命周期来说,onCreate和onDestroy是配对的,分别标识着Activity的创建和销毁,并且只可能有一次调用。从Activity是否可见来说,onStart和o