ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

第十七讲_HarmonyOS应用开发Stage模型应用组件

2026/9/27 21:03:32 拓冰建站 浏览量
第十七讲_HarmonyOS应用开发Stage模型应用组件

HarmonyOS应用开发Stage模型应用组件

  • 1. 应用级配置
  • 2. Module级配置
  • 3. Stage模型的组件
    • 3.1 AbilityStage
      • 3.1.1 AbilityStage的创建和配置
      • 3.1.2 AbilityStage的生命周期回调
      • 3.1.3 AbilityStage的事件回调:
    • 3.2 UIAbility
      • 3.2.1 UIAbility生命周期
      • 3.2.3 UIAbility启动模式

1. 应用级配置

应用级配置在AppScope目录下的app.json5配置文件中。

  • bundleName:用于标识应用的唯一性。
  • icon:应用图标
  • label:应用名称
  • versionCode:用于标识应用的版本号
  • versionName:版本号的文字描述
{"app": {"bundleName": "com.dake.myapplication","vendor": "example","versionCode": 1000000,"versionName": "1.0.0",// 读取resouces/media目录下app_icon"icon": "$media:app_icon",// 读取resouces/element目录下string.json文件中的app_name"label": "$string:app_name"}
}

2. Module级配置

Module级配置在Module_Name/src/main目录下的module.json5配置文件中。

  • abilities:配置Ability
  • deviceTypes:表明当前的Module支持在该设备上运行。
  • requestPermissions:该标签用于声明需要申请权限的名称、申请权限的原因以及权限使用的场景。
{"module": {// module的名称"name": "entry",// module的类型"type": "entry","description": "$string:module_desc","mainElement": "EntryAbility","deviceTypes": ["phone","tablet"],"deliveryWithInstall": true,"installationFree": false,"pages": "$profile:main_pages","abilities": [{"name": "EntryAbility",// 指定UIAbility的类路径"srcEntry": "./ets/entryability/EntryAbility.ts","description": "$string:EntryAbility_desc",// 入口图标"icon": "$media:icon",// 入口名称"label": "$string:EntryAbility_label","startWindowIcon": "$media:icon","startWindowBackground": "$color:start_window_background","exported": true,"skills": [{"entities": ["entity.system.home"],"actions": ["action.system.home"]}]}]}
}

3. Stage模型的组件

在这里插入图片描述

3.1 AbilityStage

AbilityStage是一个Module级别的组件容器:

  • 应用的HAP在首次加载时会创建一个AbilityStage实例,可以对该Module进行初始化等操作。
  • 一个Module拥有一个AbilityStage

一个Module编译后生成一个HAP文件,详细了解可以查看另一篇博文:HarymonyOS应用程序包介绍

3.1.1 AbilityStage的创建和配置

DevEco Studio默认工程中未自动生成AbilityStage,如需要使用AbilityStage的能力,可以手动新建一个AbilityStage文件。

  1. 创建一个 ArkTS File
  2. 文件中创建一个类,并继承AbilityStage
  3. 在Module配置文件module.json5中配置
{"module": {// srcEntry指定AbilityStage的类路径"srcEntry": "./ets/myabilitystage/MyAbilityStage.ets",}
}

3.1.2 AbilityStage的生命周期回调

  • onCreate():在开始加载对应 Module 的第一个 UIAbility 实例之前会先创建 AbilityStage,并在 AbilityStage 创建完成之后执行其 onCreate()生命周期回调。

3.1.3 AbilityStage的事件回调:

  • onAcceptWant():UIAbility 指定实例模式(specified)启动时候触发的事件回调。
  • onConfigurationUpdated():当系统全局配置发生变更时触发的事件,系统语言、深浅色等,配置项目前均定义在 Configuration 类中。
  • onMemoryLevel():当系统调整内存时触发的事件。

3.2 UIAbility

UIAbility组件是一种包含UI的应用组件,主要用于和用户交互。

  • UIAbility组件是系统调度的基本单元,为应用提供绘制界面的窗口。
  • 一个应用可以包含一个或多个UIAbility组件

3.2.1 UIAbility生命周期

UIAbility的生命周期包括Create、Foreground、Background、Destroy四个状态。
在这里插入图片描述

  • Create状态为在应用加载过程中,UIAbility实例创建完成时触发,系统会调用onCreate()回调。
  • 进入Foreground状态之前,系统会创建一个WindowStage。WindowStage创建完成后会进入onWindowStageCreate()回调;UIAbility实例切换至前台时触发onForeground()回调。
  • UIAbility实例切换至后台时触发onBackground()回调。
  • 在进入Destroy状态之前,UIAbility实例销毁之前,先进入WindowStage的onWindowStageDestroy()回调;UIAbility实例销毁时触发onDestroy()回调。

3.2.3 UIAbility启动模式

在Module的配置文件 module.json5 中配置

{"module": {"abilities": [{"launchType": "singleton"}]}
}
  • singleton 启动模式为单实例模式,默认启动模式。系统中只存在唯一一个该 UIAbility 实例。
  • multiton 启动模式为多实例模式,每次调用 startAbility()方法时,都会在应用进程中创建一个新的该类型 UIAbility 实例。
  • specified 启动模式为指定实例模式。