Activity 生命周期
- onCreate
- onStart
- onResume
- onPause
- onStop
- onRestart
- onDestroy
onCreate
onCreate(Bundle savedInstanceState)
在系统首次创建 Activity 时触发
onStart
onStart() 调用使 Activity 对用户可见,因为应用会为 Activity 进入前台并支持交互做准备。例如,应用通过此方法来初始化维护界面的代码。
onResume
这是应用与用户交互的状态。应用会一直保持这种状态,直到某些事件发生,让焦点远离应用。此类事件包括接到来电、用户导航到另一个 Activity,或设备屏幕关闭。
onPause
系统将此方法视为用户正在离开您的 Activity 的第一个标志(尽管这并不总是意味着活动正在遭到销毁);此方法表示 Activity 不再位于前台(尽管如果用户处于多窗口模式,Activity 仍然可见)。使用 onPause() 方法暂停或调整当 Activity 处于“已暂停”状态时不应继续(或应有节制地继续)的操作,以及您希望很快恢复的操作
完成 onPause() 方法并不意味着 Activity 离开“已暂停”状态。相反,Activity 会保持此状态,直到其恢复或变成对用户完全不可见。如果 Activity 恢复,系统将再次调用 onResume() 回调。如果 Activity 从“已暂停”状态返回“已恢复”状态,则系统会让 Activity 实例继续驻留在内存中,并会在系统调用 onResume() 时重新调用该实例。在这种情况下,您无需重新初始化在回调方法导致 Activity 进入“已恢复”状态期间创建的组件。如果 Activity 变为完全不可见,则系统会调用 onStop()。
onStop
Activity 不再对用户可见,则说明其已进入已停止状态,因此系统将调用 onStop() 回调。举例而言,如果新启动的 Activity 覆盖整个屏幕,就可能会发生这种情况。如果系统已结束运行并即将终止,系统还可以调用 onStop()。
当 Activity 进入已停止状态时,与 Activity 生命周期相关联的所有具有生命周期感知能力的组件都将收到 ON_STOP 事件。这时,生命周期组件可以停止任何无需在组件未在屏幕上可见时运行的功能。
#onDestroy
销毁 Ativity 之前,系统会先调用 onDestroy()。系统调用此回调的原因如下:
Activity 正在结束(由于用户彻底关闭 Activity 或由于系统为 Activity 调用 finish()),或者
由于配置变更(例如设备旋转或多窗口模式),系统暂时销毁 Activity
当 Activity 进入已销毁状态时,与 Activity 生命周期相关联的所有具有生命周期感知能力的组件都将收到 ON_DESTROY 事件。此时,生命周期组件可以在 Activity 遭到销毁之前清理所需的任何数据。
activity传递
生命周期回调的顺序已有明确定义,特别是当两个 Activity 在同一个进程(应用)中,并且其中一个要启动另一个时。以下是 Activity A 启动 Activity B 时的操作发生顺序:
- Activity A 的 onPause() 方法执行。
- Activity B 的 onCreate()、onStart() 和onResume() 方法依次执行。(Activity B 现在具有用户焦点。)
- 如果 Activity A 在屏幕上不再可见,则其 onStop() 方法执行。