Android设备在横竖屏切换时,会调用OnsavedInstanceState方法,我们来看看其生命周期的调用过程。
写了个简单例子,通过log打印出生命周期的调用过程。不多说,上图大家一看就明白。
下图是正常打开一个Activity的生命周期调用过程。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2QvwVe0lmdhJ3ZvwFM38CXlZHbvN3cpR2Lc1TPB10QGtWUCpEMJ9CXsxWam9CXwADNvwVZ6l2c052bm9CXUJDT1wkNhVzLcRnbvZ2LcZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39zN3YDOwcTM4EDOyITM1EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
下面是打开一个Activity然后由竖屏切换到横屏的生命周期调用过程。
下面是打开一个Activity然后由竖屏切换到横屏再切回竖屏的生命周期调用过程。
在书上看到大神说,onsaveInstancestate方法在 onstop之前调用,和onpause没有既定的时序关系,有可能在onpause之前,也可能在onpause之后,但是我测试了几次好像都是在onpause之后,这点还有待验证。
这里再说一个关于生命周期的知识点,最近看书才知道的。
已经打开的Activity A然后再打开另外一个Activity B。两个Activity'的生命周期是怎么执行的呢?
首先执行的是Activity A的onPause()方法,然后执行Activity B的onCreate(),onStart(),onResume(),然后再执行Activity A的onStop()方法。
大家可以打印log看下效果。这个执行顺序也提醒我们不要在onPause()方法中做太耗时的操作,有需要尽量放在onStop中,这样就不会影响新的Activity的顺利打开。