Android14 AMS 剖析之Activity 启动分析之整体流程

94 阅读2分钟

用通俗易懂的方式讲解这篇文章的核心内容:

你可以把Android系统想象成一个餐厅,用户点击App图标就像顾客点菜。整个启动过程需要四个"部门"配合:

  1. ​服务员(Launcher)​​:负责接收用户点菜请求(点击图标)
  2. ​后厨系统(SystemServer)​​:核心管理系统,负责协调各个部门
  3. ​厨师孵化器(Zygote)​​:专门培养新厨师(创建新进程)
  4. ​新厨师团队(目标App)​​:新成立的厨师小组专门服务这个顾客

​冷启动流程分六步​​:

  1. ​顾客点菜​​(点击图标)

    • Launcher(比如手机桌面)发现用户要点新菜(启动新App),通知后厨系统
  2. ​后厨准备菜单​

    • SystemServer中的ATMS(高级任务管理员)创建两个重要清单:
    • ActivityRecord(记录要做哪些菜)
    • Task(任务清单,管理多个菜品的顺序)
  3. ​暂停当前服务​

    • 系统先让当前服务的厨师(比如正在运行的微信)暂停手上的工作,腾出操作台
  4. ​招聘新厨师​

    • 通过Zygote(厨师培训学校)快速培养一个新厨师团队(App进程)
  5. ​新团队入职​

    • 新进程建立后,先准备厨房设备(初始化Application),领取基础食材
  6. ​正式做菜​

    • 新团队按照清单开始做菜:创建Activity → 备菜(onCreate)→ 上灶开火(onResume)

​关键通信机制​​:

  • 后厨系统(ATMS)和各个厨师团队之间用对讲机(Binder)通信:

    • ATMS有专用频道接收点菜请求
    • 每个厨师团队都有专用对讲机(ApplicationThread)接收指令
  • 这种双向通信就像:

    • 顾客:"我要点菜!" → ATMS
    • ATMS:"3号厨师暂停工作" → 当前App
    • ATMS:"新厨师开始做西红柿炒蛋!" → 新App进程

​为什么这样设计​​:

  • 保证所有App有序运行,不会互相干扰
  • 快速复用已有资源(Zygote机制让新建进程像克隆一样快速)
  • 统一管理系统资源,防止某个App占用过多资源

整个过程虽然后台很复杂,但用户感受到的就是点击图标→等待→App打开。就像在餐厅点菜,虽然后厨要经历备料、烹饪、传菜等步骤,顾客只需要等待美味上桌即可。

参考资料