HarmonyOS应用开发Stage模型应用组件
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文件。
- 创建一个 ArkTS File
- 文件中创建一个类,并继承
AbilityStage
- 在
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
启动模式为指定实例模式。