智能客服
你问我答,随时在线为你解决问题
UIAbility从创建到销毁过程其生命周期是动态变化的。AbilityLifecycleCallback模块提供监听UIAbility生命周期变化的能力,可用于统计每个UIAbility的运行时长、执行与UIAbility业务逻辑解耦的数据加载等场景。
本模块首批接口从API version 9 开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
本模块接口仅可在Stage模型下使用。
本模块接口只能监听进程内UIAbility生命周期变化。
- import { AbilityLifecycleCallback } from '@kit.AbilityKit';
onAbilityCreate(ability: UIAbility): void
在UIAbility的onCreate触发后回调。
元服务API:从API version 11开始,该接口支持在元服务中使用。
系统能力:SystemCapability.Ability.AbilityRuntime.AbilityCore
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ability | UIAbility | 是 | 回调事件对应的UIAbility对象。 |
示例:
onWindowStageCreate(ability: UIAbility, windowStage: window.WindowStage): void
在UIAbility的onWindowStageCreate触发后回调。
元服务API:从API version 11开始,该接口支持在元服务中使用。
系统能力:SystemCapability.Ability.AbilityRuntime.AbilityCore
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ability | UIAbility | 是 | 回调事件对应的UIAbility对象。 |
| windowStage | window.WindowStage | 是 | 回调事件对应的UIAbility主窗管理器。 |
示例:
onWindowStageActive(ability: UIAbility, windowStage: window.WindowStage): void
在UIAbility主窗获焦时触发回调。
元服务API:从API version 11开始,该接口支持在元服务中使用。
系统能力:SystemCapability.Ability.AbilityRuntime.AbilityCore
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ability | UIAbility | 是 | 回调事件对应的UIAbility对象。 |
| windowStage | window.WindowStage | 是 | 回调事件对应的UIAbility主窗管理器。 |
示例:
onWindowStageInactive(ability: UIAbility, windowStage: window.WindowStage): void
在UIAbility主窗失焦时触发回调。
元服务API:从API version 11开始,该接口支持在元服务中使用。
系统能力:SystemCapability.Ability.AbilityRuntime.AbilityCore
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ability | UIAbility | 是 | 回调事件对应的UIAbility对象。 |
| windowStage | window.WindowStage | 是 | 回调事件对应的UIAbility主窗管理器。 |
示例:
onWindowStageDestroy(ability: UIAbility, windowStage: window.WindowStage): void
在UIAbility的onWindowStageDestroy触发后回调。
元服务API:从API version 11开始,该接口支持在元服务中使用。
系统能力:SystemCapability.Ability.AbilityRuntime.AbilityCore
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ability | UIAbility | 是 | 回调事件对应的UIAbility对象 |
| windowStage | window.WindowStage | 是 | 回调事件对应的UIAbility主窗管理器。 |
示例:
onAbilityDestroy(ability: UIAbility): void
在UIAbility的onDestroy触发后回调。
元服务API:从API version 11开始,该接口支持在元服务中使用。
系统能力:SystemCapability.Ability.AbilityRuntime.AbilityCore
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ability | UIAbility | 是 | 回调事件对应的UIAbility对象。 |
示例:
onAbilityForeground(ability: UIAbility): void
在UIAbility的onForeground触发后回调。
元服务API:从API version 11开始,该接口支持在元服务中使用。
系统能力:SystemCapability.Ability.AbilityRuntime.AbilityCore
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ability | UIAbility | 是 | 回调事件对应的UIAbility对象。 |
示例:
onAbilityBackground(ability: UIAbility): void
在UIAbility的onBackground触发后回调。
元服务API:从API version 11开始,该接口支持在元服务中使用。
系统能力:SystemCapability.Ability.AbilityRuntime.AbilityCore
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ability | UIAbility | 是 | 回调事件对应的UIAbility对象。 |
示例:
onAbilityContinue(ability: UIAbility): void
在UIAbility的onContinue触发后回调。
元服务API:从API version 11开始,该接口支持在元服务中使用。
系统能力:SystemCapability.Ability.AbilityRuntime.AbilityCore
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ability | UIAbility | 是 | 回调事件对应的UIAbility对象。 |
示例:
onAbilityWillCreate?(ability: UIAbility): void
在UIAbility的onCreate触发前回调。
元服务API:从API version 12开始,该接口支持在元服务中使用。
系统能力:SystemCapability.Ability.AbilityRuntime.AbilityCore
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ability | UIAbility | 是 | 回调事件对应的UIAbility对象。 |
示例:
onWindowStageWillCreate?(ability: UIAbility, windowStage: window.WindowStage): void
在UIAbility的onWindowStageCreate触发前回调。
元服务API:从API version 12开始,该接口支持在元服务中使用。
系统能力:SystemCapability.Ability.AbilityRuntime.AbilityCore
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ability | UIAbility | 是 | 回调事件对应的UIAbility对象。 |
| windowStage | window.WindowStage | 是 | 回调事件对应的UIAbility主窗管理器。 |
示例:
onWindowStageWillDestroy?(ability: UIAbility, windowStage: window.WindowStage): void
在UIAbility的onWindowStageDestroy触发前回调。
元服务API:从API version 12开始,该接口支持在元服务中使用。
系统能力:SystemCapability.Ability.AbilityRuntime.AbilityCore
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ability | UIAbility | 是 | 回调事件对应的UIAbility对象。 |
| windowStage | window.WindowStage | 是 | 回调事件对应的UIAbility主窗管理器。 |
示例:
onAbilityWillForeground?(ability: UIAbility): void
在UIAbility的onForeground触发前回调。
元服务API:从API version 12开始,该接口支持在元服务中使用。
系统能力:SystemCapability.Ability.AbilityRuntime.AbilityCore
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ability | UIAbility | 是 | 回调事件对应的UIAbility对象。 |
示例:
onAbilityWillDestroy?(ability: UIAbility): void
在UIAbility的onDestroy触发前回调。
元服务API:从API version 12开始,该接口支持在元服务中使用。
系统能力:SystemCapability.Ability.AbilityRuntime.AbilityCore
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ability | UIAbility | 是 | 回调事件对应的UIAbility对象。 |
示例:
onAbilityWillBackground?(ability: UIAbility): void
在UIAbility的onBackground触发前回调。
元服务API:从API version 12开始,该接口支持在元服务中使用。
系统能力:SystemCapability.Ability.AbilityRuntime.AbilityCore
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ability | UIAbility | 是 | 回调事件对应的UIAbility对象。 |
示例:
onWillNewWant?(ability: UIAbility): void
在UIAbility的onNewWant触发前回调。
元服务API:从API version 12开始,该接口支持在元服务中使用。
系统能力:SystemCapability.Ability.AbilityRuntime.AbilityCore
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ability | UIAbility | 是 | 回调事件对应的UIAbility对象。 |
示例:
onNewWant?(ability: UIAbility): void
在UIAbility的onNewWant触发后回调。
元服务API:从API version 12开始,该接口支持在元服务中使用。
系统能力:SystemCapability.Ability.AbilityRuntime.AbilityCore
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ability | UIAbility | 是 | 回调事件对应的UIAbility对象。 |
示例:
onAbilityWillContinue?(ability: UIAbility): void
在UIAbility的onContinue触发前回调。
元服务API:从API version 12开始,该接口支持在元服务中使用。
系统能力:SystemCapability.Ability.AbilityRuntime.AbilityCore
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ability | UIAbility | 是 | 回调事件对应的UIAbility对象。 |
示例:
onWindowStageWillRestore?(ability: UIAbility, windowStage: window.WindowStage): void
在UIAbility的onWindowStageRestore触发前回调。
元服务API:从API version 12开始,该接口支持在元服务中使用。
系统能力:SystemCapability.Ability.AbilityRuntime.AbilityCore
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ability | UIAbility | 是 | 回调事件对应的UIAbility对象。 |
| windowStage | window.WindowStage | 是 | 回调事件对应的UIAbility主窗管理器。 |
示例:
onWindowStageRestore?(ability: UIAbility, windowStage: window.WindowStage): void
在UIAbility的onWindowStageRestore触发后回调。
元服务API:从API version 12开始,该接口支持在元服务中使用。
系统能力:SystemCapability.Ability.AbilityRuntime.AbilityCore
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ability | UIAbility | 是 | 回调事件对应的UIAbility对象。 |
| windowStage | window.WindowStage | 是 | 回调事件对应的UIAbility主窗管理器。 |
示例:
onAbilityWillSaveState?(ability: UIAbility): void
在UIAbility的onSaveState触发前回调。
元服务API:从API version 12开始,该接口支持在元服务中使用。
系统能力:SystemCapability.Ability.AbilityRuntime.AbilityCore
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ability | UIAbility | 是 | 回调事件对应的UIAbility对象。 |
示例:
onAbilitySaveState?(ability: UIAbility): void
在UIAbility的onSaveState触发后回调。
元服务API:从API version 12开始,该接口支持在元服务中使用。
系统能力:SystemCapability.Ability.AbilityRuntime.AbilityCore
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ability | UIAbility | 是 | 回调事件对应的UIAbility对象。 |
示例:
本示例展示了生命周期监听机制的部分使用场景:
- // 以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)}`);
- });
- }
- }
- // 以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');
- }
- }