典型状况下的生命周期
生命周期 | 行为 | 特征 |
---|---|---|
onCreate | Activity正在创建 | |
onRestart | Activity正在启动 | 从onStop返回时调用 |
onStart | Activity正在被启动 | Activity已经可见,但是还没有出现在前台,还无法和用户交互 |
onResume | Activity已经可见 | 出现在前台,可以和用户交互 |
onPause | Activity正在停止 | 正常情况下,紧接着onStop会调用。 特殊情况下,此时快速再回到当前Activity,那么onResume会被调用。 不能做耗时操作,会影响新Activity的显示,onPause必须执行完,新Activity的onResume 才会执行 |
onStop | Activity即将停止 | 此时回到当前Activity,会执行 onRestart -> onStart -> onResume |
onDestroy | Activity即将被销毁 | 可以做一些回收和最终的资源释放 |
注意事项:
-
打开新Activity时,正常当前页面 onPause -> onStop,
如果新Activity采用透明主题,那么当前Activity不会调onStop -
用户回到原Activity,onRestart -> onStart -> onResume
-
onCreate、onDestroy配对;
onStart、onStop配对:根据Activity是否可见来回调的
onResume、onPause配对:根据Activity是否位于前台来回调的 -
onPause一定会在新Activity onResume前调用,
所以不能在onPause中执行重量级操作,避免阻塞
Activity 嵌套 Fragment时的生命周期
ActivityA -> ActivityB(FmtA) -replace-> FmtB > 退出ActivityB ,此过程中触发哪些生命周期方法?
Fragment的 onAttach 在 Activity的 onCreate 后开始执行
Fragment的 onDestroyView 在 Activity的 onStop 后开始执行
Fragment的 onStart 在 Activity的 onStart 之前执行
Fragment replace 切换时,只会触发 Fragment的生命周期,不会触发 Activity的生命周期
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/5a96bdd753068939fda85e2f107f84f3.png)
异常情况下的生命周期
1. 系统配置变化(横竖屏切换、语言修改),导致Activity被杀死并重新创建
onPause -> onSaveInstanceState -> onStop -> onDestory - onCreate -> onStart -> onRestoreInstanceState -> onResume