以下内容均基于HarmonyOS NEXT版本
- HarmonyOS Stage模型采用分层设计思想,形成Application Framework -> AbilityStage -> UIAbility -> Component 的四层架构体系。其中:
- AbilityStage:管理HAP模块的生命周期和资源分配
- UIAbility:负责界面交互,支持跨设备数据迁移和远程调用
- Component:提供基础UI组件能力
- AbilityStage是一个Module级别的组件容器,应用的HAP在首次加载时会创建一个AbilityStage实例,可以对该Module进行初始化等操作。
- AbilityStage与Module一一对应,即一个Module拥有一个AbilityStage。
AbilityStage开发流程
- DevEco Studio默认工程中未自动生成AbilityStage,如需要使用AbilityStage的能力,可以手动新建一个AbilityStage文件:
- 在工程Module对应的ets目录下,右键选择"New > Directory",新建一个目录并命名为myabilitystage。
- 在myabilitystage目录,右键选择"New > ArkTS File",新建一个文件并命名为MyAbilityStage.ts。
- 打开MyAbilityStage.ts文件,导入AbilityStage的依赖包,自定义类继承AbilityStage并加上需要的生命周期回调,示例中增加了一个onCreate()生命周期回调。
typescript
// MyAbilityStage.ets
import { AbilityStage, Want } from '@kit.AbilityKit';
export default class MyAbilityStage extends AbilityStage {
private static readonly TAG: string = 'MyAbilityStage';
// 模块首次加载时触发
onCreate(): void {
console.log(`${MyAbilityStage.TAG} onCreate`);
// 初始化模块级资源
this.initModuleResources();
}
// 指定模式下的Ability启动拦截
onAcceptWant(want: Want): string {
console.log(`${MyAbilityStage.TAG} onAcceptWant ${JSON.stringify(want)}`);
return 'MyAbilityStage';
}
onConfigurationUpdated(config: Configuration) {
log.info("系统配置变更:", JSON.stringify(config));
this.adjustUILocale(config.locale);
}
onMemoryLevel(level: number) {
if (level < this.memoryLevel) {
this.releaseCache();
}
this.memoryLevel = level;
switch(level) {
case 0: // NORMAL
this.cacheMap.clear();
break;
case 2: // COMPLETE
this.cacheMap.clear();
break;
}
}
// 模块销毁前清理
onDestroy(): void {
this.releaseResources();
}
private initModuleResources(): void {
// 预加载公共资源
// 初始化全局对象
// 创建后台线程
}
}
- 在module.json5配置文件中,通过配置 srcEntry 参数来指定模块对应的代码路径,以作为HAP加载的入口。
json
// module.json5
{
"module": {
"name": "entry",
"type": "entry",
"srcEntry": "./ets/myabilitystage/MyAbilityStage.ets",
"abilities": [
{
"name": "MainAbility",
"srcEntry": "./ets/mainability/MainAbility.ets",
"launchType": "standard"
}
]
}
}
AbilityStage生命周期
- onCreate():在开始加载对应Module的第一个UIAbility实例之前会先创建AbilityStage,并在AbilityStage创建完成之后执行其onCreate()生命周期回调;
- onAcceptWant():UIAbility指定实例模式(specified)启动时候触发的事件回调;
- onConfigurationUpdated():当系统全局配置发生变更时触发的事件;
- onMemoryLevel():当系统调整内存时触发的事件;
- onDestroy(): 模块销毁前回收资源;