Activity的生命周期
Starting-> running-> poused-> stopped-> killed
一、生命周期
onCreate
在Activity创建时调用,通常做一些初始化设置;
onStart
在Activity即将可见时调用;
onResume
在Activity已可见,获取焦点开始与用户交互时调用;
onPause
在当前Activity被其他Activity覆盖或锁屏时调用;
onStop
在Activity对用户不可见时调用;
- 如果新Activity是透明主题时,旧Activity不会走onStop
onDestroy
在Activity销毁时调用;
onRestart
在Activity从停止状态再次启动时调用;
二、介绍
-
锁屏时只会调用onPause(),而不会调用onStop方法,开屏后则调用onResume()。
-
清单文件中未设置 android:configChanges 属性时,生命周期:先销毁onPause()、onStop()、onDestroy()再重新创建onCreate()、onStart()、onResume()方法。
-
设置 android:configChanges=“orientation|screenSize” 属性值时,不走生命周期方法,只会执行onConfigurationChanged()方法。
-
弹出 Dialog、Toast、PopupWindow 时不会对生命周期有任何影响,因为其本质上是WindowManager.addView()显示的。
-
启动一个theme为Dialog的Activity时,生命周期为:Activity1.onPause -> Activity2.onCreate -> Activity2.onStart -> Activity2.onResume。Activity1不会调用onStop,弹出 Dialog 主题的 Activity2时Activity1的页面还是可见的,只是失去了焦点而已所以仅有 onPause 回调。
-
onCreate内setContentView加载好布局,生成一个viewTree。在onResume的时候,创建一个ViewRootImpl显示页面。
-
onActivityResult调用时机:Activity2返回到Activity1时,Activity2.onPause -> Activity1.onActivityResult -> Activity1.onRestart -> Activity1.onStart
-
onNewIntent调用时机:如果需要启动的实例是之前有打开过的,并且在栈的顶部,目前处于onPause、onStop 的状态,其他实例再次进入的话,执行顺序为:onNewIntent,onRestart,onStart,onResume。