AbilityStage
概述
AbilityStage 是一个 Module 级别的组件容器,应用的 HAP 在首次加载时会创建一个 AbilityStage 实例,可以对该 Module 进行初始化等操作。
AbilityStage 与 Module 一一对应,即一个 Module 拥有一个 AbilityStage。
创建
DevEco Studio 默认工程中未自动生成 AbilityStage,如需要使用 AbilityStage 的能力,可以手动新建一个 AbilityStage 文件,具体步骤如下。
在工程 Module 对应的 ets 目录下,右键选择“New > Directory”,新建一个目录并命名为 myabilitystage。
在 myabilitystage 目录,右键选择“New > ArkTS File”,新建一个文件并命名为 MyAbilityStage.ets。
打开 MyAbilityStage.ets 文件,导入 AbilityStage 的依赖包,自定义类继承 AbilityStage 并加上需要的生命周期回调,示例中增加了一个 onCreate()生命周期回调
import { AbilityStage, Want } from "@kit.AbilityKit";
export default class MyAbilityStage extends AbilityStage {
onCreate(): void {
// 应用的HAP在首次加载的时,为该Module初始化操作
}
onAcceptWant(want: Want): string {
// 仅specified模式下触发
return "MyAbilityStage";
}
}
4.在 module.json5 配置文件中,通过配置 srcEntry 参数来指定模块对应的代码路径,以作为 HAP 加载的入口。
{
"module": {
"name": "entry",
"type": "entry",
"srcEntry": "./ets/myabilitystage/MyAbilityStage.ets",
// ...
}
}
AbilityStage 拥有 onCreate()生命周期回调和 onAcceptWant()、onConfigurationUpdated()、onMemoryLevel()事件回调。
onCreate()生命周期回调:在开始加载对应 Module 的第一个 UIAbility 实例之前会先创建 AbilityStage,并在 AbilityStage 创建完成之后执行其 onCreate()生命周期回调。AbilityStage 模块提供在 Module 加载的时候,通知开发者,可以在此进行该 Module 的初始化(如资源预加载,线程创建等)能力。
onAcceptWant()事件回调:UIAbility 指定实例模式(specified)启动时候触发的事件回调,具体使用请参见 UIAbility 启动模式综述。
onConfigurationUpdated()事件回调:当系统全局配置发生变更时触发的事件,系统语言、深浅色等,配置项目前均定义在 Configuration 类中。
onMemoryLevel()事件回调:当系统调整内存时触发的事件。
应用被切换到后台时,系统会将在后台的应用保留在缓存中。即使应用处于缓存中,也会影响系统整体性能。当系统资源不足时,系统会通过多种方式从应用中回收内存,必要时会完全停止应用,从而释放内存用于执行关键任务。为了进一步保持系统内存的平衡,避免系统停止用户的应用进程,可以在 AbilityStage 中的 onMemoryLevel()生命周期回调中订阅系统内存的变化情况,释放不必要的资源。
import { AbilityStage, AbilityConstant } from "@kit.AbilityKit";
export default class MyAbilityStage extends AbilityStage {
onMemoryLevel(level: AbilityConstant.MemoryLevel): void {
// 根据系统可用内存的变化情况,释放不必要的内存
}
}