自从接触了《android开发艺术探索》这本书后,对android有了更深一步的认识,这本书确实适合android进阶研究,对android的一些问题进行了深入的分析与介绍。
接下来就我学习Activity的生命周期的分析进行总结分享。
问题1:onStart和onResume、onPause以及onStop的实质区别?
onStart和onStop是从Activity是否可见这个角度来回调的,而onResume和onPause是从Activity是否位于前台这个角度来回调的。
onstart表示Activity可见,但是还不能与用户进行交互,可以理解为Activity已经显示出来了,但是我们还看不见。
onStop表示Activity即将停止,此时可以做一些稍微重量级的回收工作,但不能太耗时,此时Activity已经变得不可见。
onResume表示此时Activity从后台切换到前台,可以与用户进行交互,于onstart相比,onStart和onResume都表示Activity可见,但onstart的时候Activity还在后台,而onResume时Activity从后台切换到前台。
onPause表示Activity正在停止,此时Activity切换到后台,不能与用户进行交互。不能再onPause中做重量级的操作。
从Activity的整个生命周期来看,onCreate和ondestory是配对的,分别标识着Activity的创建与销毁,并且只能有一次被调用。
从Activity的可见来说,onstart和onStop是配对的,随着用户的操作或者设备屏幕的点亮与熄灭,这两个方法可能被多次调用。
从Activit是否在前台来说,onResume和onPause是配对的,随着用户的操作或者设备屏幕的点亮与熄灭,这两个方法可能多次被调用。
问题2:有两个Activity,分别为Activity A和Activity B,用A启动B ,B 的onResume和A的onPause哪个先执行?
追踪android的源码可知,在新的activity启动之前,栈顶的Activity需要先onPause后,新的Activity才能执行。因此在启动ActivityB之前先执行Activity A的onPause,然后启动Activity B 执行Activity B的onResume。