1-11.【Stage 模型】Stage 模型是否支持多进程?

3 阅读2分钟

是的,Stage 模型支持多进程,不过需要理解它的粒度和机制。


1️⃣ 多进程支持的概念

  • Ability 本身可以运行在不同进程中
  • WindowStage、页面栈和 UIAbility 实例 都属于 Ability 所在进程
  • Stage 模型本身并不限制进程,它关注的是 Ability → WindowStage → Page 的解耦与生命周期管理

换句话说:

  • 单个 UIAbility 默认在 宿主进程
  • 可以通过 HAP 配置或系统调度,让不同 Ability 运行在不同进程
  • 多进程情况下,跨进程通信由系统 IPC 框架管理

2️⃣ 多进程下的通信和生命周期

维度单进程多进程
页面栈管理WindowStage 内管理页面栈WindowStage 依然独立,但在不同进程中,页面栈无法直接共享内存
Ability 生命周期在同一进程中直接管理系统通过 IPC 通信管理 Ability 生命周期
跨 Ability 跳转直接调用 router 或 AbilityManager通过系统 AbilityManager + IPC 传递 Intent 和回调
数据共享全局状态、单例、内存对象可直接访问必须通过 Data Ability、Service HAP 或 IPC 传递

✅ 核心:Stage 模型在多进程下依然可以保持能力和页面解耦,但跨进程共享数据需通过系统能力桥接


3️⃣ 工程实践

  • 多进程配置方法:在 config.json 或 HAP 配置中指定 process 属性

  • 推荐策略:

    1. 核心 UIAbility 保持在主进程
    2. 后台服务 Ability / 高耗能功能 Ability 可以单独进程
    3. 跨进程通信尽量轻量化,避免大对象序列化传输

4️⃣ 总结

  • Stage 模型本身支持多进程
  • WindowStage 与页面栈管理仍然是 Ability 级别
  • 跨进程 Ability 生命周期和数据通过系统 IPC / Data Ability / Service HAP 管理
  • 设计原则:UIAbility 保持轻量、核心 UI 在主进程,后台功能可以独立进程