讨论广场 问答详情
主进程,默认情况下,应用中(同一Bundle名称)的所有UIAbility均是运行在同一个独立进程(主进程)中,即图1中的“Main Process1”。学习鸿蒙中,遇到了一个问题怎么理解呢?#跟着万少学鸿蒙
2301_79516720 2025-11-13 22:14:11
40 评论 分享

主进程,默认情况下,应用中(同一Bundle名称)的所有UIAbility均是运行在同一个独立进程(主进程)中,即图1中的“Main Process1”。学习鸿蒙中,遇到了一个问题怎么理解呢?#跟着万少学鸿蒙

40 评论 分享
写回答
全部评论(1)

基本进程类型

开发者开发一个复杂功能的应用,包含多个UIAbility组件和多个ExtensionAbility组件,ExtensionAbility如图1中的FormExtensionAbilityShareExtensionAbility。那么在应用运行态,可能存在的进程类型:

  • 主进程:默认情况下,应用中(同一Bundle名称)的所有UIAbility均是运行在同一个独立进程(主进程)中,即图1中的“Main Process1”。

  • ExtensionAbility进程:应用中(同一Bundle名称)的所有同一类型ExtensionAbility均是运行在一个独立进程中,如图1中“FormExtensionAbility Process”、“其他类型ExtensionAbility Process”(其他类型的ExtensionAbility组件)。

    特别地,对于继承自UIExtensionAbility的ExtensionAbility,可以为每个实例配置独立进程。例如ShareExtensionAbility可以指定每个ShareExtensionAbility实例分别运行在一个独立进程,详见UIExtensionAbility

  • Render进程:应用中的Web组件运行时,系统会为之分配一个Render进程,用于渲染。如图1中的“Render Process”。

  • 基本进程类型

  • 进程名称的命名无固定规则,而且与进程类型也不存在直接关联,不能用于业务逻辑的判断。例如,开发者开发了一款应用com.example.myapplication,其中有一个输入法组件InputMethodExtensionAbility,输入法组件是运行在独立进程中的,通常情况下其进程名是为“com.example.myapplication:input”。但这并不是固定的,该进程名对应的进程不一定是输入法进程,输入法进程也不一定是该进程名。
  • 一个进程可以包含多个AbilityStage,一个AbilityStage可以包含多个Ability。进程的生命周期与Ability生命周期息息相关,当进程内的所有Ability都退出后,进程才会走销毁流程。换句话说,如果想退出进程,需要先退出进程内的所有Ability。

#跟着万少学鸿蒙

2025-11-13 22:14:45