71-鸿蒙开发:Ability Kit之Stage模型开发,进程模型概述

71-鸿蒙开发:Ability Kit之Stage模型开发,进程模型概述
最新回答
触动了心弦丶

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为卡片扩展进程。

四、进程模型设计优势
  1. 稳定性增强:单个Ability崩溃不会影响其他进程
  2. 安全性提升:敏感能力(如数据共享)运行在独立进程
  3. 性能优化:渲染进程隔离避免网页脚本阻塞主线程
  4. 扩展性支持:系统应用可通过多进程配置满足复杂场景需求

注意:普通应用(非系统应用)无法使用ServiceExtensionAbility和DataShareExtensionAbility,其进程模型仅包含主进程和可能的扩展能力进程。