1# AbilityStage组件容器
2
3
4[AbilityStage](../reference/apis-ability-kit/js-apis-app-ability-abilityStage.md)是一个[Module](../quick-start/application-package-structure-stage.md)级别的组件容器,应用的[HAP](../quick-start/hap-package.md)在首次加载时会创建一个AbilityStage实例,可以对该Module进行初始化等操作。
5
6
7AbilityStage与Module一一对应,即一个Module拥有一个AbilityStage。
8
9
10DevEco Studio默认工程中未自动生成AbilityStage,如需要使用AbilityStage的能力,可以手动新建一个AbilityStage文件,具体步骤如下。
11
12
131. 在工程Module对应的ets目录下,右键选择“New > Directory”,新建一个目录并命名为myabilitystage。
14
152. 在myabilitystage目录,右键选择“New > ArkTS File”,新建一个文件并命名为MyAbilityStage.ets16
173. 打开MyAbilityStage.ets文件,导入AbilityStage的依赖包,自定义类继承AbilityStage并加上需要的生命周期回调,示例中增加了一个[onCreate()](../reference/apis-ability-kit/js-apis-app-ability-abilityStage.md#abilitystageoncreate)生命周期回调。
18
19    ```ts
20    import { AbilityStage, Want } from '@kit.AbilityKit';
21
22    export default class MyAbilityStage extends AbilityStage {
23      onCreate(): void {
24        // 应用HAP首次加载时触发,可以在此执行该Module的初始化操作(例如资源预加载、线程创建等)。
25      }
26
27      onAcceptWant(want: Want): string {
28        // 仅specified模式下触发
29        return 'MyAbilityStage';
30      }
31    }
32    ```
33
344. 在[module.json5配置文件](../quick-start/module-configuration-file.md)中,通过配置 `srcEntry` 参数来指定模块对应的代码路径,以作为HAP加载的入口。
35
36    ```json
37    {
38      "module": {
39        "name": "entry",
40        "type": "entry",
41        "srcEntry": "./ets/myabilitystage/MyAbilityStage.ets",
42        // ...
43      }
44    }
45    ```
46
47[AbilityStage](../reference/apis-ability-kit/js-apis-app-ability-abilityStage.md)拥有[onCreate()](../reference/apis-ability-kit/js-apis-app-ability-abilityStage.md#abilitystageoncreate)生命周期回调和[onAcceptWant()](../reference/apis-ability-kit/js-apis-app-ability-abilityStage.md#abilitystageonacceptwant)、[onConfigurationUpdated()](../reference/apis-ability-kit/js-apis-app-ability-abilityStage.md#abilitystageonconfigurationupdate)、[onMemoryLevel()](../reference/apis-ability-kit/js-apis-app-ability-abilityStage.md#abilitystageonmemorylevel)事件回调。
48
49
50- onCreate()生命周期回调:在开始加载对应Module的第一个[UIAbility](../reference/apis-ability-kit/js-apis-app-ability-uiAbility.md)实例之前会先创建AbilityStage,并在AbilityStage创建完成之后执行其onCreate()生命周期回调。AbilityStage模块提供在Module加载的时候,通知开发者,可以在此进行该Module的初始化(如资源预加载,线程创建等)能力。
51
52- onAcceptWant()事件回调:UIAbility[指定实例模式(specified)](uiability-launch-type.md#specified启动模式)启动时候触发的事件回调,具体使用请参见[UIAbility启动模式综述](uiability-launch-type.md)。
53
54- onConfigurationUpdated()事件回调:当系统全局配置发生变更时触发的事件,系统语言、深浅色等,配置项目前均定义在[Configuration](../reference/apis-ability-kit/js-apis-app-ability-configuration.md)类中。
55
56- onMemoryLevel()事件回调:当系统调整内存时触发的事件。
57
58应用被切换到后台时,系统会将在后台的应用保留在缓存中。即使应用处于缓存中,也会影响系统整体性能。当系统资源不足时,系统会通过多种方式从应用中回收内存,必要时会完全停止应用,从而释放内存用于执行关键任务。为了进一步保持系统内存的平衡,避免系统停止用户的应用进程,可以在AbilityStage中的onMemoryLevel()生命周期回调中订阅系统内存的变化情况,释放不必要的资源。
59
60
61  ```ts
62  import { AbilityStage, AbilityConstant } from '@kit.AbilityKit';
63
64  export default class MyAbilityStage extends AbilityStage {
65    onMemoryLevel(level: AbilityConstant.MemoryLevel): void {
66      // 根据系统可用内存的变化情况,释放不必要的内存
67    }
68  }
69  ```
70