情景一:从 Launcher 页面点击 App 图标启动一个全新的 App(冷启动)。
情景二:在应用内从 Activity A 跳转到 Activity B(应用内跳转)。
情景三:启动 App 后,按 Home 键回到 Launcher ,再点击 App 图标(热启动)。
理解Android系统中的ActivityTaskManagerService
(ATMS)的代码确实非常复杂,因为它涉及许多系统组件的交互和状态管理。为了帮助理解,下面我将从三个具体场景入手,简化ATMS在这些场景中的工作流程。
情景一:从Launcher页面点击App图标启动一个全新的App(冷启动)
冷启动是指应用进程尚未启动的情况下,用户点击Launcher图标启动应用的过程。此时,Android系统需要创建一个新的应用进程,并启动目标Activity。
-
启动过程:
- 用户点击App图标后,Launcher通过
startActivity
发起一个Intent。 - 这个Intent会传递到
ActivityTaskManagerService
(ATMS) 处理。ATMS负责管理和调度所有应用的Activity栈。 - ATMS检查应用进程是否存在。在冷启动情况下,应用进程不存在,因此ATMS需要创建一个新的应用进程。
- 用户点击App图标后,Launcher通过
-
应用进程创建:
- ATMS调用
A
- ATMS调用