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文件。
- 创建一个 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
启动模式为指定实例模式。