之前在做笔试题的时候遇到一个问题:Activity A切换到ActivityB时,A和B的生命周期变化。
事实上,它们的生命周期变化是这样的:
1、A的onPause()方法被执行。
2、B的onCreate()方法,onStart(),onResume()方法被顺序执行。
3、如果B是不透明的,A将会完全被隐藏,此时A完全不可见,A的onStop()方法就会被执行。
问题一:为什么要先执行A的onPause方法,再执行B的生命周期方法?
问题二:为什么不是执行完A的onStop方法之后再执行B的生命周期方法?
要先停止A中的操作,比如播放的音乐等等,不然切换到B音乐还在播放。
若是先执行完A的onStop方法之后再执行B的生命周期方法,会出现黑屏的现象。
生命周期回调的确定的顺序允许管理两个Activity之间的切换信息。例如,当第一个Activity终止时你必须把数据写到数据库中以便下一个Activity能够读取它,那么你就应该在onPause()方法执行期间把数据写入数据库,而不是在onStop()方法执行期间。
我们注意到Activity B是在Activity A的onPause()方法执行完之后才执行自己的生命周期的,如果A的onPause()中有非常耗时的代码,那么将会影响到B的启动速度。因此,我们要在onPause()中做尽可能少的工作来提高页面的切换速度。
接下来我们看另外一种情况:在B中按下返回键回到A,那么生命周期怎么变化呢?
1、B执形onPause()方法。
2、A执形onRestart()方法,onStart()方法,onResume()方法。
3、B执形onStop()方法,onDestroy()方法。