Android14 AMS 剖析之Activity 启动分析之 Launcher 端发起过程

188 阅读2分钟

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

一句话概括

当你在手机桌面点击App图标时,Launcher(桌面程序)会通过一系列复杂流程,最终通知系统服务启动对应的App界面。


通俗版流程解析

  1. ​手指点击图标时​

    • 就像点击电梯按钮,Launcher会收到"点击事件"
    • 找到这个图标对应的App信息(比如微信)
  2. ​准备启动材料​

    • 生成一个"启动指令"(Intent),包含要启动的App信息
    • 设置特殊标记:FLAG_ACTIVITY_NEW_TASK(在新任务栈打开)
    • 准备动画参数(比如从图标位置展开的动画)
  3. ​跨部门协作​

    • Launcher把启动请求交给"系统调度中心"(ActivityTaskManagerService)
    • 通过Instrumentation这个"快递员",把启动材料打包发送给系统服务
  4. ​系统服务接手​

    • 后续流程由系统服务处理(文章后续章节讲解)
    • 就像快递员把包裹送到物流中心,后面的分拣运输由物流系统完成

关键概念解释

  • ​Launcher​​:手机的桌面程序,本质也是一个App
  • ​Intent​​:包含目标组件信息的"启动指令"
  • ​ActivityOptions​​:控制启动动画等效果的参数包
  • ​FLAG_ACTIVITY_NEW_TASK​​:让新App在自己的任务栈运行
  • ​Binder通信​​:Android系统跨进程通信的"专用电话"
  • ​ATMS​​:ActivityTaskManagerService,管理系统所有Activity的核心服务

流程简化图

手指点击 → Launcher处理点击 → 生成启动指令 → 通过Binder通知系统 → 系统服务接手启动

后续章节会讲解系统服务如何创建Activity、管理任务栈、处理动画等更深层的机制。这个Launcher发起的流程就像按下电梯按钮,真正的机械运转是在电梯系统内部完成的。

参考资料