Activity生命周期的基础篇
本篇主要讲解一个Activity的生命周期和多个Activity交互的生命周期。Activity,一个页面加载出来就是通过Activity这个载体。
先来说以I行啊一个Activity的生命周期。我们在环境中创建一个Activity的时候,执行的方法及顺序是onCreate--->onStart--->onResume,当到onResume的时候Activity就处于一种开启并显示的状态了。Activity显示以后。点击手机的返回键的时候,执行的方法及顺序就是onPause--->onStop--->onDestory到了这个方法以后整个Activity就消失了。如果点击的是home键,执行的方法及顺序是pnPause--->onStop,onDestory方法并不执行。按Home和按返回键的区别是: 按Home键Activity只是到了后台,并没有被销毁,而按返回键后Activity直接被销毁调用了onDestroy()
多个Activity交互的生命周期,以MainActivity和SecondActivity为例:首先当第一个MainActivity创建成功时,执行的方法及顺序为Main onCreate--->Main onStart--->Main onResume。点击按钮跳转到SecondActivity时候,执行的方法及顺序是Main onPause--->Second onCreate--->Second onStart--->Second onResume--->Main onStop。点击手机返回按键,执行的方法及顺序是Second onPause--->Main onRestart--->Mian onStart--->Main onResume--->Second onStop--->Second onDestory。
弹出Dialog的时候,Activity的生命周期是不发生变化的。
在父Activity中显示透明的或者非全屏的Activity,它的执行方法,父Activity只会执行到onPause,不会执行onStop方法。
执行finish()方法的时候,生命周期都会执行onDestory。
总结与疑问:
通过上面运行的实例可以简单的理解:
onCreate()不可见,不可交互。
onStart()可见,不可交互。
onResume()可见,可交互。
onPause()部分可见,不可交互(比如上面弹出来电话了)。
onStop()不可见,不可交互。
可能大家会有一些疑问,我也有过。在两个Activity跳转的时候,为什么Maintivity跳转到SecondActivity的时候,要是这样的执行顺序Main onPause--->Second onCreate--->Second onStart--->Second onResume--->Main onStop而不是执行完Main onPause--->先执行Main onStop。因为onStop执行完以后就是一种不可见的状态,如果SecondActivity出现问题被crush掉了,MainActivity又执行了onStop是一种不可见的状态,对于用户来说就是一种黑屏状态了,所以这样设计,SecondActivity启动执行完成之后,Framework会记录这个完成状态,把原来的隐藏掉了就可以执行MainActivity.Stop。解释了这个疑问。