Android onPause与onStop的一些理解 - MrWu94/AndroidNote GitHub Wiki
onPause
在正常使用应用的过程中,应用有时会失去焦点,导致 Activity 暂停。例如,当应用在多窗口模式下运行时,仅有一个应用随时具备焦点;系统将暂停所有其他应用。 例如,当半透明 Activity 打开时(比如对话框样式中的 Activity),上一个 Activity 会暂停。 只要 Activity 仍然部分可见但目前又未处于焦点之中,它会一直暂停。
但是,一旦 Activity 完全被阻挡并且不可见,它便停止。
当您的 Activity 进入暂停状态时,系统会对您的 Activity 调用 onPause() 方法,通过该方法,您可以停止不应在暂停时继续的进行中操作(比如视频),还可保留在用户继续离开应用时应予永久保存的任何信息。如果用户从暂停状态返回到您的 Activity,系统会重新开始该 Activity 并调用 onResume() 方法。
注:当系统调用 Activity 的 onPause() 方法时,系统将发出信号,指出 Activity 将暂时暂停,且用户可能将焦点返回到您的 Activity,或者应用在多窗口模式下运行。 但是,此方法调用通常也是用户即将离开您 Activity 的第一个信号。
暂停 Activity
当系统为您的 Activity 调用 onPause() 时,它从技术角度看意味着您的 Activity 仍然处于部分可见状态,但往往说明用户即将离开 Activity 并且它很快就要进入“停止”状态。 您通常应使用 onPause() 回调:
检查 Activity 是否可见。如果不可见,请停止动画或其他正在进行的可能消耗 CPU 的操作。记住,从 Android 7.0 开始,暂停的应用可能会在多窗口模式下运行。 在本示例中,您可能不想停止动画或视频播放。 提交未保存的更改,但仅当用户离开时希望永久性保存此类更改(比如电子邮件草稿)。 释放系统资源,比如广播接收器、传感器手柄(比如 GPS) 或当您的 Activity 暂停且用户不需要它们时仍然可能影响电池寿命的任何其他资源。
继续 Activity
当用户从“暂停”状态继续您的 Activity 时,系统会调用 onResume() 方法。
请注意,每当您的 Activity 进入前台时系统便会调用此方法,包括它初次创建之时。 同样地,您应实现 onResume() 以初始化您在 onPause() 期间释放的组件,并执行每当 Activity 进入“继续”状态时必须进行的任何其他初始化操作(比如开始动画和初始化只在 Activity 具有用户焦点时使用的组件)。
参考:https://developer.android.com/training/basics/activity-lifecycle/pausing.html?hl=zh-cn