一、Activity生命周期
onCreate():首次创建 Activity 时调用。 您应该在此方法中执行所有正常的静态设置— 创建视图、将数据绑定到列表等。
onRestart():在 Activity 已停止并即将再次启动前调用。
onStart():在 Activity 即将对用户可见之前调用。
onResume():在 Activity 即将开始与用户进行交互之前调用。 此时,Activity 处于 Activity 堆栈的顶层,并具有用户输入焦点。
onPause():当系统即将开始继续另一个 Activity 时调用。 此方法通常用于确认对持久性数据的未保存更改(向存储设备保存用户编辑内容)、停止动画以及其他可能消耗 CPU 的内容。
onStop():Activity 对用户不再可见时调用。如果 Activity 被销毁,或另一个 Activity(一个现有 Activity 或新 Activity)继续执行并将其覆盖,就可能发生这种情况。
onDestory():在 Activity 被销毁前调用。当 Activity 结束(或有人调用finish()方法),或系统为节省空间而暂时销毁该 Activity 实例时,可能会调用它,可以通过isfinishing()方法区分这两种情况。
要点:
1.onCreate~onResume的过程中,Activity进程不会被系统终止,onPause~onDestory过程中,系统有可能终止Activity。
2.Activity A启动Activity B时,Activity A进入到onPause状态,当Activity B 执行onCreat~onResume之后,Activity A才进入onStop,这是由于在Activity启动之前,会检查栈顶Activity要先onPause之后才会启动新Activity。
根据以上两点,得知不要在onPause中进行费时操作,否则会妨碍下一个Activity的体验。
二、保存Activity状态
三、Activity任务栈
alwaysRetainTaskState:
如果在任务的根 Activity 中将此属性设置为 "true"
,则不会发生刚才所述的默认行为。即使在很长一段时间后,任务仍将所有 Activity 保留在其堆栈中。
clearTaskOnLaunch:
如果在任务的根 Activity 中将此属性设置为 "true"
,则每当用户离开任务然后返回时,系统都会将堆栈清除到只剩下根 Activity。
finishOnTaskLaunch:
此属性类似于 clearTaskOnLaunch
,但它对单个 Activity 起作用,而非整个任务。 此外,它还有可能会导致任何 Activity 停止,包括根 Activity。 设置为 "true"
时,Activity 仍是任务的一部分,但是仅限于当前会话。如果用户离开然后返回任务,则任务将不复存在。