# @ohos.app.ability.abilityLifecycleCallback (UIAbility生命周期回调监听器)
[UIAbility](js-apis-app-ability-uiAbility.md)从创建到销毁过程其生命周期是动态变化的。AbilityLifecycleCallback模块提供监听[UIAbility](js-apis-app-ability-uiAbility.md)生命周期变化的能力,可用于统计每个UIAbility的运行时长、执行与UIAbility业务逻辑解耦的数据加载等场景。
> **说明:**
>
> 本模块首批接口从API version 9 开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
>
> 本模块接口仅可在Stage模型下使用。
>
> 本模块接口只能监听进程内UIAbility生命周期变化。
## 使用说明
1. 应用创建AbilityLifecycleCallback对象,并调用[ApplicationContext.on('abilityLifecycle')](js-apis-inner-application-applicationContext.md#applicationcontextonabilitylifecycle)接口注册UIAbility生命周期变化监听。
2. 当UIAbility生命周期变化时,应用可以通过已注册的AbilityLifecycleCallback对象接收到UIAbility生命周期的变化通知。
3. 当应用不需要监听UIAbility生命周期变化时,需要通过[ApplicationContext.off('abilityLifecycle')](js-apis-inner-application-applicationContext.md#applicationcontextoffabilitylifecycle)接口取消监听。
## 导入模块
```ts
import { AbilityLifecycleCallback } from '@kit.AbilityKit';
```
## AbilityLifecycleCallback
### onAbilityCreate
onAbilityCreate(ability: UIAbility): void
在UIAbility的[onCreate](js-apis-app-ability-uiAbility.md#oncreate)触发后回调。
**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象。 |
**示例:**
参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。
### onWindowStageCreate
onWindowStageCreate(ability: UIAbility, windowStage: window.WindowStage): void
在UIAbility的[onWindowStageCreate](js-apis-app-ability-uiAbility.md#onwindowstagecreate)触发后回调。
**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象。 |
| windowStage | [window.WindowStage](../apis-arkui/arkts-apis-window-WindowStage.md) | 是 | 回调事件对应的UIAbility主窗管理器。 |
**示例:**
参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。
### onWindowStageActive
onWindowStageActive(ability: UIAbility, windowStage: window.WindowStage): void
在UIAbility主窗获焦时触发回调。
**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象。 |
| windowStage | [window.WindowStage](../apis-arkui/arkts-apis-window-WindowStage.md) | 是 | 回调事件对应的UIAbility主窗管理器。 |
**示例:**
参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。
### onWindowStageInactive
onWindowStageInactive(ability: UIAbility, windowStage: window.WindowStage): void
在UIAbility主窗失焦时触发回调。
**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象。 |
| windowStage | [window.WindowStage](../apis-arkui/arkts-apis-window-WindowStage.md) | 是 | 回调事件对应的UIAbility主窗管理器。 |
**示例:**
参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。
### onWindowStageDestroy
onWindowStageDestroy(ability: UIAbility, windowStage: window.WindowStage): void
在UIAbility的[onWindowStageDestroy](js-apis-app-ability-uiAbility.md#onwindowstagedestroy)触发后回调。
**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象 |
| windowStage | [window.WindowStage](../apis-arkui/arkts-apis-window-WindowStage.md) | 是 | 回调事件对应的UIAbility主窗管理器。 |
**示例:**
参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。
### onAbilityDestroy
onAbilityDestroy(ability: UIAbility): void
在UIAbility的[onDestroy](js-apis-app-ability-uiAbility.md#ondestroy)触发后回调。
**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象。 |
**示例:**
参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。
### onAbilityForeground
onAbilityForeground(ability: UIAbility): void
在UIAbility的[onForeground](js-apis-app-ability-uiAbility.md#onforeground)触发后回调。
**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象。 |
**示例:**
参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。
### onAbilityBackground
onAbilityBackground(ability: UIAbility): void
在UIAbility的[onBackground](js-apis-app-ability-uiAbility.md#onbackground)触发后回调。
**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象。 |
**示例:**
参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。
### onAbilityContinue
onAbilityContinue(ability: UIAbility): void
在UIAbility的[onContinue](js-apis-app-ability-uiAbility.md#oncontinue)触发后回调。
**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象。 |
**示例:**
参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。
### onAbilityWillCreate12+
onAbilityWillCreate?(ability: UIAbility): void
在UIAbility的[onCreate](js-apis-app-ability-uiAbility.md#oncreate)触发前回调。
**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象。 |
**示例:**
参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。
### onWindowStageWillCreate12+
onWindowStageWillCreate?(ability: UIAbility, windowStage: window.WindowStage): void
在UIAbility的[onWindowStageCreate](js-apis-app-ability-uiAbility.md#onwindowstagecreate)触发前回调。
**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象。 |
| windowStage | [window.WindowStage](../apis-arkui/arkts-apis-window-WindowStage.md) | 是 | 回调事件对应的UIAbility主窗管理器。 |
**示例:**
参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。
### onWindowStageWillDestroy12+
onWindowStageWillDestroy?(ability: UIAbility, windowStage: window.WindowStage): void
在UIAbility的[onWindowStageDestroy](js-apis-app-ability-uiAbility.md#onwindowstagedestroy)触发前回调。
**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象。 |
| windowStage | [window.WindowStage](../apis-arkui/arkts-apis-window-WindowStage.md) | 是 | 回调事件对应的UIAbility主窗管理器。 |
**示例:**
参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。
### onAbilityWillForeground12+
onAbilityWillForeground?(ability: UIAbility): void
在UIAbility的[onForeground](js-apis-app-ability-uiAbility.md#onforeground)触发前回调。
**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象。 |
**示例:**
参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。
### onAbilityWillDestroy12+
onAbilityWillDestroy?(ability: UIAbility): void
在UIAbility的[onDestroy](js-apis-app-ability-uiAbility.md#ondestroy)触发前回调。
**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象。 |
**示例:**
参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。
### onAbilityWillBackground12+
onAbilityWillBackground?(ability: UIAbility): void
在UIAbility的[onBackground](js-apis-app-ability-uiAbility.md#onbackground)触发前回调。
**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象。 |
**示例:**
参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。
### onWillNewWant12+
onWillNewWant?(ability: UIAbility): void
在UIAbility的[onNewWant](js-apis-app-ability-uiAbility.md#onnewwant)触发前回调。
**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象。 |
**示例:**
参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。
### onNewWant12+
onNewWant?(ability: UIAbility): void
在UIAbility的[onNewWant](js-apis-app-ability-uiAbility.md#onnewwant)触发后回调。
**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象。 |
**示例:**
参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。
### onAbilityWillContinue12+
onAbilityWillContinue?(ability: UIAbility): void
在UIAbility的[onContinue](js-apis-app-ability-uiAbility.md#oncontinue)触发前回调。
**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ------ | ------ |
| ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象。 |
**示例:**
参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。
### onWindowStageWillRestore12+
onWindowStageWillRestore?(ability: UIAbility, windowStage: window.WindowStage): void
在UIAbility的[onWindowStageRestore](js-apis-app-ability-uiAbility.md#onwindowstagerestore)触发前回调。
**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ------ | ------ |
| ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象。 |
| windowStage | [window.WindowStage](../apis-arkui/arkts-apis-window-WindowStage.md) | 是 | 回调事件对应的UIAbility主窗管理器。 |
**示例:**
参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。
### onWindowStageRestore12+
onWindowStageRestore?(ability: UIAbility, windowStage: window.WindowStage): void
在UIAbility的[onWindowStageRestore](js-apis-app-ability-uiAbility.md#onwindowstagerestore)触发后回调。
**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ------ | ------ |
| ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象。 |
| windowStage | [window.WindowStage](../apis-arkui/arkts-apis-window-WindowStage.md) | 是 | 回调事件对应的UIAbility主窗管理器。 |
**示例:**
参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。
### onAbilityWillSaveState12+
onAbilityWillSaveState?(ability: UIAbility): void
在UIAbility的[onSaveState](js-apis-app-ability-uiAbility.md#onsavestate)触发前回调。
**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ------ | ------ |
| ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象。 |
**示例:**
参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。
### onAbilitySaveState12+
onAbilitySaveState?(ability: UIAbility): void
在UIAbility的[onSaveState](js-apis-app-ability-uiAbility.md#onsavestate)触发后回调。
**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ------ | ------ |
| ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象。 |
**示例:**
参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。
### AbilityLifecycleCallback使用示例
本示例展示了生命周期监听机制的部分使用场景:
1. 在[AbilityStage](../../application-models/abilitystage.md)创建时注册监听。
2. 在[AbilityStage](../../application-models/abilitystage.md)销毁时注销监听。
3. 监听到对应UIAbility创建时加载资源,监听到对应UIAbility销毁时释放资源。
4. 在UIAbility创建、销毁及前后台状态切换时,记录事件并向外发送通知。
```ts
// 以MyStage.ets文件为例,使用AbilityLifecycleCallback监听UIAbility生命周期
import { AbilityLifecycleCallback, AbilityStage, application, UIAbility } from "@kit.AbilityKit";
import { hilog } from '@kit.PerformanceAnalysisKit';
import { JSON } from "@kit.ArkTS";
import { window } from "@kit.ArkUI";
import { BusinessError } from "@kit.BasicServicesKit";
const DOMAIN = 0x0000;
const TAG = 'testTag';
function loadContent() {
// 加载数据
}
function releaseContent() {
// 释放数据
}
function recordAbilityEvent(abilityName: string) {
// 执行打点
}
function publishEvent() {
// 对外发布通知
}
let abilityLifecycleCallback: AbilityLifecycleCallback = {
onAbilityCreate(ability: UIAbility) {
hilog.info(DOMAIN, TAG, 'onAbilityCreate: ' + ability.context.abilityInfo.name);
// UIAbility事件打点记录
recordAbilityEvent(ability.context.abilityInfo.name);
// 模拟入口UIAbility创建时,加载资源对外发布通知
if (ability.context.abilityInfo.name === 'EntryAbility') {
loadContent();
publishEvent();
}
},
onWindowStageCreate(ability: UIAbility, windowStage: window.WindowStage) {
hilog.info(DOMAIN, TAG, 'AbilityLifecycleCallback onWindowStageCreate.');
},
onWindowStageActive(ability: UIAbility, windowStage: window.WindowStage) {
hilog.info(DOMAIN, TAG, 'AbilityLifecycleCallback onWindowStageActive.');
},
onWindowStageInactive(ability: UIAbility, windowStage: window.WindowStage) {
hilog.info(DOMAIN, TAG, 'AbilityLifecycleCallback onWindowStageInactive.');
},
onWindowStageDestroy(ability: UIAbility, windowStage: window.WindowStage) {
hilog.info(DOMAIN, TAG, 'AbilityLifecycleCallback onWindowStageDestroy.');
},
onAbilityDestroy(ability: UIAbility) {
hilog.info(DOMAIN, TAG, 'onAbilityDestroy: ' + ability.context.abilityInfo.name);
recordAbilityEvent(ability.context.abilityInfo.name);
// 模拟入口UIAbility销毁时,释放资源
if (ability.context.abilityInfo.name === 'EntryAbility') {
releaseContent();
publishEvent();
}
},
onAbilityForeground(ability: UIAbility) {
hilog.info(DOMAIN, TAG, 'AbilityLifecycleCallback onAbilityForeground.');
recordAbilityEvent(ability.context.abilityInfo.name);
if (ability.context.abilityInfo.name === 'EntryAbility') {
publishEvent();
}
},
onAbilityBackground(ability: UIAbility) {
hilog.info(DOMAIN, TAG, 'AbilityLifecycleCallback onAbilityBackground.');
recordAbilityEvent(ability.context.abilityInfo.name);
if (ability.context.abilityInfo.name === 'EntryAbility') {
publishEvent();
}
},
onAbilityContinue(ability: UIAbility) {
hilog.info(DOMAIN, TAG, 'AbilityLifecycleCallback onAbilityContinue.');
},
onNewWant(ability: UIAbility) {
hilog.info(DOMAIN, TAG, 'AbilityLifecycleCallback onNewWant');
},
onWillNewWant(ability: UIAbility) {
hilog.info(DOMAIN, TAG, 'AbilityLifecycleCallback onWillNewWant');
},
onAbilityWillCreate(ability: UIAbility) {
hilog.info(DOMAIN, TAG, 'AbilityLifecycleCallback onAbilityWillCreate');
},
onWindowStageWillCreate(ability: UIAbility, windowStage: window.WindowStage) {
hilog.info(DOMAIN, TAG, 'AbilityLifecycleCallback onWindowStageWillCreate');
},
onWindowStageWillDestroy(ability: UIAbility, windowStage: window.WindowStage) {
hilog.info(DOMAIN, TAG, 'AbilityLifecycleCallback onWindowStageWillDestroy');
},
onAbilityWillDestroy(ability: UIAbility) {
hilog.info(DOMAIN, TAG, 'AbilityLifecycleCallback onAbilityWillDestroy');
},
onAbilityWillForeground(ability: UIAbility) {
hilog.info(DOMAIN, TAG, 'AbilityLifecycleCallback onAbilityWillForeground');
},
onAbilityWillBackground(ability: UIAbility) {
hilog.info(DOMAIN, TAG, 'AbilityLifecycleCallback onAbilityWillBackground');
},
onAbilityWillContinue(ability: UIAbility) {
hilog.info(DOMAIN, TAG, 'AbilityLifecycleCallback onAbilityWillContinue.');
},
onWindowStageWillRestore(ability: UIAbility, windowStage: window.WindowStage) {
hilog.info(DOMAIN, TAG, 'AbilityLifecycleCallback onWindowStageWillRestore.');
},
onWindowStageRestore(ability: UIAbility, windowStage: window.WindowStage) {
hilog.info(DOMAIN, TAG, 'AbilityLifecycleCallback onWindowStageRestore.');
},
onAbilityWillSaveState(ability: UIAbility) {
hilog.info(DOMAIN, TAG, 'AbilityLifecycleCallback onAbilityWillSaveState.');
},
onAbilitySaveState(ability: UIAbility) {
hilog.info(DOMAIN, TAG, 'AbilityLifecycleCallback onAbilitySaveState.');
}
};
let lifecycleId = -1; // 保存监听id
export default class MyStage extends AbilityStage {
onCreate(): void {
hilog.info(DOMAIN, TAG, 'AbilityStage onCreate')
// AbilityStage创建时注册UIAbility生命周期监听,并把监听id保存起来
try {
let applicationContext = application.getApplicationContext();
lifecycleId = applicationContext.on('abilityLifecycle', abilityLifecycleCallback);
} catch (e) {
hilog.error(DOMAIN, TAG, `register abilityLifecycle failed: ${JSON.stringify(e)}`);
}
}
onDestroy(): void {
// AbilityStage销毁时取消UIAbility生命周期监听注册
let applicationContext = application.getApplicationContext();
applicationContext.off('abilityLifecycle', lifecycleId).catch((e: BusinessError) => {
hilog.error(DOMAIN, TAG, `unregister abilityLifecycle failed: ${JSON.stringify(e)}`);
});
}
}
```
```ts
// 以EntryAbility.ets为例,展示应用入口UIAbility
import { AbilityConstant, ConfigurationConstant, UIAbility, Want } from '@kit.AbilityKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { window } from '@kit.ArkUI';
const DOMAIN = 0x0000;
const TAG = 'testTag';
export default class EntryAbility extends UIAbility {
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
this.context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET);
hilog.info(DOMAIN, TAG, 'EntryAbility onCreate');
}
onDestroy(): void {
hilog.info(DOMAIN, TAG, 'EntryAbility onDestroy');
}
onWindowStageCreate(windowStage: window.WindowStage): void {
// 主窗创建
hilog.info(DOMAIN, TAG, 'EntryAbility onWindowStageCreate');
windowStage.loadContent('pages/Index', (err) => {
if (err.code) {
hilog.error(DOMAIN, TAG, 'Failed to load the content. Cause: %{public}s', JSON.stringify(err));
return;
}
hilog.info(DOMAIN, TAG, 'Succeeded in loading the content.');
});
}
onWindowStageDestroy(): void {
// 主窗销毁
hilog.info(DOMAIN, TAG, 'EntryAbility onWindowStageDestroy');
}
onForeground(): void {
// UIAbility切换到前台
hilog.info(DOMAIN, TAG, 'EntryAbility onForeground');
}
onBackground(): void {
// UIAbility切换到后台
hilog.info(DOMAIN, TAG, 'EntryAbility onBackground');
}
}
```