2021-10-10 23:06:46
鸿蒙开发中Stage模型的进程模型采用多进程隔离架构,通过主进程、扩展能力进程和渲染进程的分工实现高效运行,系统应用还可通过权限配置自定义进程名实现更灵活的进程管理。具体说明如下:
一、基础进程模型架构系统进程模型通过不同颜色标识三类核心进程,其运行规则和典型场景如下:

主进程(Main Process - 绿色)同一Bundle名称下的所有UIAbility、ServiceExtensionAbility和DataShareExtensionAbility默认运行在此独立进程。例如:一个社交应用的主界面(UIAbility)、后台消息服务(ServiceExtensionAbility)和联系人数据共享(DataShareExtensionAbility)均在此进程。
扩展能力进程(蓝色)同一Bundle名称下的同类型ExtensionAbility(除Service/DataShare外)运行在独立进程。典型场景包括:
FormExtensionAbility Process:卡片服务进程,如天气应用的桌面卡片
InputMethodExtensionAbility Process:输入法服务进程
其他ExtensionAbility Process:如文件管理扩展能力
渲染进程(Render Process - 黄色)WebView采用独立渲染进程,实现网页内容与主进程的隔离,提升安全性。例如:浏览器应用中网页加载、JavaScript执行等操作均在此进程完成。
仅系统应用支持通过配置实现更灵活的进程管理:

自定义进程名配置在HAP(Harmony Ability Package)的config.json文件中声明"process"字段,可为该模块指定独立进程名。例如:
{ "module": { "process": "com.example.specialprocess" }}配置后,该HAP中的UIAbility、DataShareExtensionAbility和ServiceExtensionAbility将运行在自定义进程。
多HAP进程隔离不同HAP可通过配置不同进程名实现完全隔离。例如:
HAP1配置进程名为"com.example.process1"
HAP2配置进程名为"com.example.process2"此时两个模块的Ability将运行在不同进程,需通过进程间通信机制交互。
开发者可通过以下命令监控进程状态:
hdc shell ps -ef输出示例:
UID PID PPID C STIME TTY TIME CMDshell 1234 1 0 10:00 ? 00:00:01 com.example.mainshell 5678 1 0 10:01 ? 00:00:00 com.example.form其中com.example.main为主进程,com.example.form为卡片扩展进程。
四、进程模型设计优势注意:普通应用(非系统应用)无法使用ServiceExtensionAbility和DataShareExtensionAbility,其进程模型仅包含主进程和可能的扩展能力进程。