二、AMS + Activity 启动主路径

1、问题

点击桌面图标打开一个 App,谁在系统侧调度进程与界面?窗口又是谁管的?

活动与进程调度主要靠 AMS;窗口层级与显示配合靠WMS,二者都在 system_server,App经Binder调用。

2、入口

角色在哪App 侧常见入口
AMSsystem_serverActivityManager / ActivityTaskManagerstartActivity
WMSsystem_serverWindowManageraddView / 窗口 token
Zygote独立进程被 AMS 请求 fork 新 App 进程时参与

3、主路径:点击图标 → 看到界面

WMS目标 App 进程ZygoteAMSsystem_serverLauncher/AppWMS目标 App 进程ZygoteAMSsystem_serverLauncher/Appalt[进程不存在]最终送到显示startActivity (Binder)fork 新进程新进程起来调度生命周期 (Binder)窗口/Token 协作
1. Launcher / 用户点击图标
   → 调用 startActivity(Intent)

2. App 进程(Launcher)经 Binder 进入系统
   → ActivityManagerService(AMS)收到启动请求
   (分界:左边应用侧,右边系统侧)

3. AMS 做策略判断
   → 权限、任务栈、是否已有进程、是否要新建任务等

4. 若目标 App 进程不存在
   → AMS 请求 Zygote fork 新进程
   → 新进程进入 ActivityThread 主循环

5. AMS 调度生命周期
   → 经 Binder 回调到 App:onCreate → onStart → onResume 等

6. Activity 要显示时与窗口发生关系
   → 通过 Session/Token 与 WMS 协作,加入窗口层级

7. SurfaceFlinger 合成送显
   → 用户看见界面

4、应用侧 vs 系统侧(必会)

应用侧系统侧
典型代码context.startActivity()ActivityManagerService
跑在哪你的 App / Launcher 进程system_server
怎么连SDK APIBinder 进 AMS

5、AMS

  • 管什么:Activity 启动/切换、任务栈、进程与生命周期调度(还有不少相关能力,先抓启动)
  • 不一手包办 UI 像素:真正窗口层级更多在 WMS;AMS 负责「哪个 Activity 该起来」
  • 和 Zygote:需要新进程时,由 AMS(经进程管理路径)让 Zygote fork

6、WMS

  • 管什么:窗口(Window)、层级、与 Display 的关系;多屏时「显示在哪块屏」会碰到它
  • 和 Activity:Activity 有窗口;可见性、焦点、层级和 WMS 强相关
  • 座舱伏笔:多 Display / 仪表与中控分屏,后面 OccupantZone、Car 多屏会再碰到 WMS/显示策略

一句话:AMS 决定启动谁;WMS 参与怎么铺到屏幕上。

7、和 AIDL Demo / 座舱对照

系统启动 Activity你们取车速 Demo
startActivity → AMSgetSpeed / 回调 → CarService
系统服务在 system_server自研服务在 CarServiceApp 进程
真 ServiceManager 里有 activityDemo 小本子里有 "car"(仅本进程)
最终要上屏 → 常扯到 WMSHMI 自己 setText 更新(简单 UI)

8、实践

有设备/模拟器时:

# 看 activity 服务在不在
adb shell service list | grep activity

# 看当前前台/焦点相关(输出多,看个开头即可)
adb shell dumpsys activity activities | head -50

# 启动一个包后观察(把包名换成你的)
adb shell am start -n com.jxf.carhmiapp/.MainActivity
adb shell dumpsys activity activities | head -50
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黄毛火烧雪下

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值