一、活动的生命周期
1、活动状态
-
运行状态
当一个活动位于栈顶的时候,该活动就处于运行状态。(Android是使用任务栈来管理活动的,也称返回栈(Back Stack)。在默认情况下,每当我们启动一个新的活动,它会在返回栈中入栈,并处于栈顶位置。每当我们按下Back键或调用finish()方法去销毁一个活动时,处于栈顶的活动会出栈,这时前一个入栈的活动会位于栈顶。系统总是会显示处于栈顶的活动给用户。) -
暂停状态
当一个活动不再处于栈顶的位置,但仍然可见时,这时活动就进入了暂停状态。处于暂停状态的活动是完全存活的。 -
停止状态
当一个活动不再处于栈顶位置,并且完全不可见的时候,就进入了停止状态。 -
销毁状态
当一个活动从返回栈中移除后就变成了销毁状态。
2、活动的回调方法
- onCreate()
①Activity开始创建时
②程序在暂停、停止状态下被杀死后重新打开时 - onStart()
①onCreate()方法之后,即Activity正在被启动时(此时,Activity还不可见(在后台),还无法与用户交互)
②Activity从停止状态恢复时调用 - onResume()
①Activity第一次启动完毕(onStart()方法之后调用)
②当前Activity被挡住一部分后,重新回到当前Activity时(从暂停状态恢复时调用)
③界面获得焦点 - onPause()
①Activity停止时,仍可见时
②界面失去焦点 - onStop()
Activity不在UI最顶层,完全被挡住不可见时 - onDestroy()
Activity即将被销毁时 - onRestart()
Activity处于onStop()状态时(不可见时)重新回到UI最顶层
3、活动的生命周期
(1)Activity启动:onCreate()→onStart()→onResume()
(2)点击Home键回到主界面/打开新的Activity:onPause()→onStop()
注:有一种特殊情况,如果新Activity采用了透明主题,那么当前Activity不会回调onStop()
(3)再次回到原Activity时:onRestart()→onStart()→onResume()
(4)退出当前Activity时:onPause()→onStop()→onDestroy()
(5)当执行到onPause()方法Activity失去焦点时,重新回到前台会执行onResume()方法,如果此时进程被销毁Activity重新执行时会先执行onCreate()方法。
(6)当执行到onStop()方法Activity不可见时,再次回到前台会执行onRestart()方法,如果此时进程被销毁Activity会重新执行onCreate()方法。
(7)两个Activity(A、B)切换(B是正常的Activity)的生命周期:onPause(A)->onCreate(B)->onStart(B)->onResume(B)->oStop(A)。这时如果按回退键回退到A,生命周期为:onPause(B)->onRestart(A)->onStart(A)->onResume(A)->oStop(B)。如果在切换到B后调用了A.finish(),