Activity的生命周期方法

其实对于Activity的生命周期只要你去了解过几乎都能很熟练的写下来。但是有句话怎么说来着,纸上得来终觉浅吧!虽然一般情况下没人会问你这种看似很低级的问题。好了先来一张图认识一下
Activity的生命周期方法
很官方的一张图了。接下来就直接验证就好了。
首先我启动了一个MainActivity可以看看这时候MainActivity的生命周期方法执行结果
Activity的生命周期方法其实每个Activity第一次创建的时候都会这样。接下来我在MainActivity中又启动了一个NormalActivity把之前的MainActivity完全盖住了,其实这有了解过的都知道MainActivity会进入onStop状态,但是到底是先完成NormaActivity的创建还是先停止MainActivity呢?,还是直接看看结果吧
Activity的生命周期方法可以看到MainActivity先进入onPause,此时等待NormalActivity经历onCreate–>onStart–>onResume之后,MainActivity才会进入onStop状态。
如果此时我们按返回键回到MainActivity界面,此时NormalActivity将会进入onDestory。而MainActivity将会进入重新启动也就是onRestart–>onStart–>onResume(此时MainActivity不会进入onCreate。因为它并没有进入onDestory),那执行顺序又是怎么样的呢?还是看结果
Activity的生命周期方法这个已经不需要解释了吧。
Android中还存在一种半透明样式的Activity,它会占据屏幕位置但是不会完全占据。这种我就没有测试啦,感兴趣的可以自己去试试哦。
由于开开发中你几乎离不开dialog,而dialog也会占据屏幕位置,那会不会影响Activity的生命周期呢?这个我同样做了测试,首先启动Activity,然后在该Activity上面弹出一个dialog并使得点击外部不能消失。效果是这样的
Activity的生命周期方法整个流程是先启动Activity然后弹出这个dialog之后点击Cancel按钮让这个dialog消失。在这个弹出dialog和隐藏dialog的过程中Activity的生命周期方法并没有任何变化
Activity的生命周期方法可以看到MainActivity只是经历了从无到有的周期方法。之后的dialog并没有影响它的生命周期方法。因为Activity的实例是在任务栈中,所以只有任务栈中的结构变了才会有影响,而dialog并不会改变任务栈中的结构。同理如果弹出的是popupWindow也不会改变它的生命周期。
总结:1.只有任务栈中结构发生了改变才会影响到Activity的生命周期(比如再次启动了一个Activity)或者任务栈被系统回收掉(这个涉及到内存管理这一块暂时不深究)了。
2.当新启动一个Activity的时候会先进入onPause等待新的Activity创建完毕了之后再进入onStop或者onDestory。