本文同步发表于我的微信公众号,微信搜索 程语新视界 即可关注,每个工作日都有文章更新

一、进程gai念

   进程是操作系统进行资源分配的基本单位,也是操作系统结构的基础。在 HarmonyOS 中,一个应用可以由多个 UIAbility 和 ExtensionAbility 组件构成,这些组件在运行时可能分布在不同的进程中。

二、进程类型

1. 主进程

  • 默认情况下,同一应用(Bundle 名称相同)的所有 UIAbility 组件都运行在同一个独立进程中,称为主进程。

  • 例如,一个名为 com.example.myapp 的应用,其所有 UIAbility 默认运行在同一个主进程中。

2. ExtensionAbility 进程

  • 同一类型的所有 ExtensionAbility 组件(如 FormExtensionAbility、ShareExtensionAbility)运行在一个独立的进程中。

  • 例如,所有 FormExtensionAbility 实例运行在 “FormExtensionAbility 进程” 中。

  • 特别地,继承自 UIExtensionAbility 的组件可以为每个实例配置独立进程。

3. Render 进程

  • 应用中使用的 Web 组件在运行时,系统会为其分配一个独立的 Render 进程,用于页面渲染。

注意:进程名称没有固定规则,不能用于业务逻辑判断。例如,输入法进程的名称可能是 com.example.myapp:input,但这并不是固定的。

三、其他进程类型(适用于 2in1 和 Tablet 设备)

1. 模块独立进程

  • 对于多 HAP(HarmonyOS Ability Package)的应用,如果希望不同 HAP 的 UIAbility 运行在不同进程中,可以在 module.json5 中配置:

    • isolationMode: isolationOnly:只在独立进程中运行。

    • isolationMode: isolationFirst:优先在独立进程中运行。

  • 例如,UIAbilityC 可以配置为运行在 “Main Process2” 而不是默认的 “Main Process1”。

2. 动态指定进程

  • 当同一 HAP 中的 UIAbility 需要根据运行时状态(如每个进程最多支持 5 个实例)动态分配到不同进程时:

    • 在 module.json5 中设置该 UIAbility 的 isolationProcess: true

    • 系统启动该 Ability 时,会回调主控进程的 onNewProcessRequest 方法。

    • 然后在该回调中返回一个自定义字符串,系统根据该字符串复用或创建新进程。

  • 例如,UIAbilityD 可能运行在 “Main Process3” 或 “Main Process4” 中。

3. 静态指定进程

  • 同一应用中的UIAbility或EmbeddedUIExtensionAbility需要运行到不同进程时,可以在 module.json5 的 abilities 或 extensionAbilities 标签中设置 process 字段,指定 UIAbility 或 EmbeddedUIExtensionAbility 运行的进程。

  • 如果多个组件配置了相同的 process 字符串,它们将运行在同一个进程中。

  • 例如,UIAbilityE 和 EmbeddedUIExtensionAbility 可以配置为运行在 “Main Process5” 中。

4. 子进程

  • 可以使用 childProcessManager 接口创建子进程,用于执行后台任务。

  • 子进程的生命周期依赖于父进程,父进程结束时子进程也会被终止。

  • 子进程不支持再创建子进程。

  • 例如,主进程可以创建 “ArkTS Child Process” 或 “Native Child Process”。

四、进程与 Ability 的生命周期关系

  • 一个进程可以包含多个 AbilityStage,一个 AbilityStage 可以包含多个 Ability。

  • 进程的生命周期与其中运行的 Ability 密切相关:只有当进程中所有 Ability 都退出后,进程才会被销毁。

  • 因此,要退出进程,必须先退出其中所有的 Ability。

五、配置说明

  • 进程的分配和行为可以通过 module.json5 配置文件进行灵活控制。

  • 支持的配置项包括:

    • isolationMode

    • isolationProcess

    • process 字段

  • 应根据业务需求选择合适的进程模型,以优化资源使用和性能。

总结

HarmonyOS 提供了灵活的进程模型,支持主进程、ExtensionAbility 进程、Render 进程、模块独立进程、动态/静态指定进程以及子进程等多种类型。可以通过配置文件或运行时回调来控制组件的进程分配,从而实现资源隔离、性能优化和多任务处理。进程的生命周期与其中运行的 Ability 紧密相关,需合理设计以避免资源泄漏或进程残留。

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐