1# @ohos.app.ability.abilityLifecycleCallback (UIAbility生命周期回调监听器) 2<!--Kit: Ability Kit--> 3<!--Subsystem: Ability--> 4<!--Owner: @wkljy; @xuzhihao666--> 5<!--Designer: @ccllee1--> 6<!--Tester: @lixueqing513--> 7<!--Adviser: @huipeizi--> 8 9[UIAbility](js-apis-app-ability-uiAbility.md)从创建到销毁过程其生命周期是动态变化的。AbilityLifecycleCallback模块提供监听[UIAbility](js-apis-app-ability-uiAbility.md)生命周期变化的能力,可用于统计每个UIAbility的运行时长、执行与UIAbility业务逻辑解耦的数据加载等场景。 10 11> **说明:** 12> 13> 本模块首批接口从API version 9 开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 14> 15> 本模块接口仅可在Stage模型下使用。 16> 17> 本模块接口只能监听进程内UIAbility生命周期变化。 18 19## 使用说明 20 211. 应用创建AbilityLifecycleCallback对象,并调用[ApplicationContext.on('abilityLifecycle')](js-apis-inner-application-applicationContext.md#applicationcontextonabilitylifecycle)接口注册UIAbility生命周期变化监听。 222. 当UIAbility生命周期变化时,应用可以通过已注册的AbilityLifecycleCallback对象接收到UIAbility生命周期的变化通知。 233. 当应用不需要监听UIAbility生命周期变化时,需要通过[ApplicationContext.off('abilityLifecycle')](js-apis-inner-application-applicationContext.md#applicationcontextoffabilitylifecycle)接口取消监听。 24 25## 导入模块 26 27```ts 28import { AbilityLifecycleCallback } from '@kit.AbilityKit'; 29``` 30 31## AbilityLifecycleCallback 32 33### onAbilityCreate 34 35onAbilityCreate(ability: UIAbility): void 36 37在UIAbility的[onCreate](js-apis-app-ability-uiAbility.md#oncreate)触发后回调。 38 39**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 40 41**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore 42 43**参数:** 44 45 | 参数名 | 类型 | 必填 | 说明 | 46 | -------- | -------- | -------- | -------- | 47 | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象。 | 48 49**示例:** 50 51参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。 52 53### onWindowStageCreate 54 55onWindowStageCreate(ability: UIAbility, windowStage: window.WindowStage): void 56 57在UIAbility的[onWindowStageCreate](js-apis-app-ability-uiAbility.md#onwindowstagecreate)触发后回调。 58 59**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 60 61**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore 62 63**参数:** 64 65 | 参数名 | 类型 | 必填 | 说明 | 66 | -------- | -------- | -------- | -------- | 67 | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象。 | 68 | windowStage | [window.WindowStage](../apis-arkui/arkts-apis-window-WindowStage.md) | 是 | 回调事件对应的UIAbility主窗管理器。 | 69 70**示例:** 71 72参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。 73 74### onWindowStageActive 75 76onWindowStageActive(ability: UIAbility, windowStage: window.WindowStage): void 77 78在UIAbility主窗获焦时触发回调。 79 80**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 81 82**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore 83 84**参数:** 85 86 | 参数名 | 类型 | 必填 | 说明 | 87 | -------- | -------- | -------- | -------- | 88 | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象。 | 89 | windowStage | [window.WindowStage](../apis-arkui/arkts-apis-window-WindowStage.md) | 是 | 回调事件对应的UIAbility主窗管理器。 | 90 91**示例:** 92 93参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。 94 95### onWindowStageInactive 96 97onWindowStageInactive(ability: UIAbility, windowStage: window.WindowStage): void 98 99在UIAbility主窗失焦时触发回调。 100 101**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 102 103**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore 104 105**参数:** 106 107 | 参数名 | 类型 | 必填 | 说明 | 108 | -------- | -------- | -------- | -------- | 109 | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象。 | 110 | windowStage | [window.WindowStage](../apis-arkui/arkts-apis-window-WindowStage.md) | 是 | 回调事件对应的UIAbility主窗管理器。 | 111 112**示例:** 113 114参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。 115 116### onWindowStageDestroy 117 118onWindowStageDestroy(ability: UIAbility, windowStage: window.WindowStage): void 119 120在UIAbility的[onWindowStageDestroy](js-apis-app-ability-uiAbility.md#onwindowstagedestroy)触发后回调。 121 122**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 123 124**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore 125 126**参数:** 127 128 | 参数名 | 类型 | 必填 | 说明 | 129 | -------- | -------- | -------- | -------- | 130 | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象 | 131 | windowStage | [window.WindowStage](../apis-arkui/arkts-apis-window-WindowStage.md) | 是 | 回调事件对应的UIAbility主窗管理器。 | 132 133**示例:** 134 135参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。 136 137### onAbilityDestroy 138 139onAbilityDestroy(ability: UIAbility): void 140 141在UIAbility的[onDestroy](js-apis-app-ability-uiAbility.md#ondestroy)触发后回调。 142 143**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 144 145**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore 146 147**参数:** 148 149 | 参数名 | 类型 | 必填 | 说明 | 150 | -------- | -------- | -------- | -------- | 151 | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象。 | 152 153**示例:** 154 155参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。 156 157### onAbilityForeground 158 159onAbilityForeground(ability: UIAbility): void 160 161在UIAbility的[onForeground](js-apis-app-ability-uiAbility.md#onforeground)触发后回调。 162 163**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 164 165**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore 166 167**参数:** 168 169 | 参数名 | 类型 | 必填 | 说明 | 170 | -------- | -------- | -------- | -------- | 171 | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象。 | 172 173**示例:** 174 175参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。 176 177### onAbilityBackground 178 179onAbilityBackground(ability: UIAbility): void 180 181在UIAbility的[onBackground](js-apis-app-ability-uiAbility.md#onbackground)触发后回调。 182 183**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 184 185**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore 186 187**参数:** 188 189 | 参数名 | 类型 | 必填 | 说明 | 190 | -------- | -------- | -------- | -------- | 191 | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象。 | 192 193**示例:** 194 195参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。 196 197### onAbilityContinue 198 199onAbilityContinue(ability: UIAbility): void 200 201在UIAbility的[onContinue](js-apis-app-ability-uiAbility.md#oncontinue)触发后回调。 202 203**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 204 205**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore 206 207**参数:** 208 209 | 参数名 | 类型 | 必填 | 说明 | 210 | -------- | -------- | -------- | -------- | 211 | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象。 | 212 213**示例:** 214 215参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。 216 217### onAbilityWillCreate<sup>12+</sup> 218 219onAbilityWillCreate?(ability: UIAbility): void 220 221在UIAbility的[onCreate](js-apis-app-ability-uiAbility.md#oncreate)触发前回调。 222 223**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。 224 225**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore 226 227**参数:** 228 229 | 参数名 | 类型 | 必填 | 说明 | 230 | -------- | -------- | -------- | -------- | 231 | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象。 | 232 233**示例:** 234 235参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。 236 237### onWindowStageWillCreate<sup>12+</sup> 238 239onWindowStageWillCreate?(ability: UIAbility, windowStage: window.WindowStage): void 240 241在UIAbility的[onWindowStageCreate](js-apis-app-ability-uiAbility.md#onwindowstagecreate)触发前回调。 242 243**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。 244 245**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore 246 247**参数:** 248 249 | 参数名 | 类型 | 必填 | 说明 | 250 | -------- | -------- | -------- | -------- | 251 | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象。 | 252 | windowStage | [window.WindowStage](../apis-arkui/arkts-apis-window-WindowStage.md) | 是 | 回调事件对应的UIAbility主窗管理器。 | 253 254**示例:** 255 256参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。 257 258### onWindowStageWillDestroy<sup>12+</sup> 259 260onWindowStageWillDestroy?(ability: UIAbility, windowStage: window.WindowStage): void 261 262在UIAbility的[onWindowStageDestroy](js-apis-app-ability-uiAbility.md#onwindowstagedestroy)触发前回调。 263 264**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。 265 266**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore 267 268**参数:** 269 270 | 参数名 | 类型 | 必填 | 说明 | 271 | -------- | -------- | -------- | -------- | 272 | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象。 | 273 | windowStage | [window.WindowStage](../apis-arkui/arkts-apis-window-WindowStage.md) | 是 | 回调事件对应的UIAbility主窗管理器。 | 274 275**示例:** 276 277参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。 278 279### onAbilityWillForeground<sup>12+</sup> 280 281onAbilityWillForeground?(ability: UIAbility): void 282 283在UIAbility的[onForeground](js-apis-app-ability-uiAbility.md#onforeground)触发前回调。 284 285**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。 286 287**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore 288 289**参数:** 290 291 | 参数名 | 类型 | 必填 | 说明 | 292 | -------- | -------- | -------- | -------- | 293 | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象。 | 294 295**示例:** 296 297参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。 298 299### onAbilityWillDestroy<sup>12+</sup> 300 301onAbilityWillDestroy?(ability: UIAbility): void 302 303在UIAbility的[onDestroy](js-apis-app-ability-uiAbility.md#ondestroy)触发前回调。 304 305**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。 306 307**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore 308 309**参数:** 310 311 | 参数名 | 类型 | 必填 | 说明 | 312 | -------- | -------- | -------- | -------- | 313 | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象。 | 314 315**示例:** 316 317参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。 318 319### onAbilityWillBackground<sup>12+</sup> 320 321onAbilityWillBackground?(ability: UIAbility): void 322 323在UIAbility的[onBackground](js-apis-app-ability-uiAbility.md#onbackground)触发前回调。 324 325**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。 326 327**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore 328 329**参数:** 330 331 | 参数名 | 类型 | 必填 | 说明 | 332 | -------- | -------- | -------- | -------- | 333 | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象。 | 334 335**示例:** 336 337参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。 338 339### onWillNewWant<sup>12+</sup> 340 341onWillNewWant?(ability: UIAbility): void 342 343在UIAbility的[onNewWant](js-apis-app-ability-uiAbility.md#onnewwant)触发前回调。 344 345**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。 346 347**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore 348 349**参数:** 350 351 | 参数名 | 类型 | 必填 | 说明 | 352 | -------- | -------- | -------- | -------- | 353 | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象。 | 354 355**示例:** 356 357参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。 358 359### onNewWant<sup>12+</sup> 360 361onNewWant?(ability: UIAbility): void 362 363在UIAbility的[onNewWant](js-apis-app-ability-uiAbility.md#onnewwant)触发后回调。 364 365**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。 366 367**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore 368 369**参数:** 370 371 | 参数名 | 类型 | 必填 | 说明 | 372 | -------- | -------- | -------- | -------- | 373 | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象。 | 374 375**示例:** 376 377参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。 378 379### onAbilityWillContinue<sup>12+</sup> 380 381onAbilityWillContinue?(ability: UIAbility): void 382 383在UIAbility的[onContinue](js-apis-app-ability-uiAbility.md#oncontinue)触发前回调。 384 385**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。 386 387**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore 388 389**参数:** 390 391 | 参数名 | 类型 | 必填 | 说明 | 392 | ------ | ------ | ------ | ------ | 393 | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象。 | 394 395**示例:** 396 397参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。 398 399### onWindowStageWillRestore<sup>12+</sup> 400 401onWindowStageWillRestore?(ability: UIAbility, windowStage: window.WindowStage): void 402 403在UIAbility的[onWindowStageRestore](js-apis-app-ability-uiAbility.md#onwindowstagerestore)触发前回调。 404 405**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。 406 407**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore 408 409**参数:** 410 411 | 参数名 | 类型 | 必填 | 说明 | 412 | ------ | ------ | ------ | ------ | 413 | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象。 | 414 | windowStage | [window.WindowStage](../apis-arkui/arkts-apis-window-WindowStage.md) | 是 | 回调事件对应的UIAbility主窗管理器。 | 415 416**示例:** 417 418参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。 419 420### onWindowStageRestore<sup>12+</sup> 421 422onWindowStageRestore?(ability: UIAbility, windowStage: window.WindowStage): void 423 424在UIAbility的[onWindowStageRestore](js-apis-app-ability-uiAbility.md#onwindowstagerestore)触发后回调。 425 426**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。 427 428**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore 429 430**参数:** 431 432 | 参数名 | 类型 | 必填 | 说明 | 433 | ------ | ------ | ------ | ------ | 434 | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象。 | 435 | windowStage | [window.WindowStage](../apis-arkui/arkts-apis-window-WindowStage.md) | 是 | 回调事件对应的UIAbility主窗管理器。 | 436 437**示例:** 438 439参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。 440 441### onAbilityWillSaveState<sup>12+</sup> 442 443onAbilityWillSaveState?(ability: UIAbility): void 444 445在UIAbility的[onSaveState](js-apis-app-ability-uiAbility.md#onsavestate)触发前回调。 446 447**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。 448 449**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore 450 451**参数:** 452 453 | 参数名 | 类型 | 必填 | 说明 | 454 | ------ | ------ | ------ | ------ | 455 | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象。 | 456 457**示例:** 458 459参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。 460 461### onAbilitySaveState<sup>12+</sup> 462 463onAbilitySaveState?(ability: UIAbility): void 464 465在UIAbility的[onSaveState](js-apis-app-ability-uiAbility.md#onsavestate)触发后回调。 466 467**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。 468 469**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore 470 471**参数:** 472 473 | 参数名 | 类型 | 必填 | 说明 | 474 | ------ | ------ | ------ | ------ | 475 | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 回调事件对应的UIAbility对象。 | 476 477**示例:** 478 479参见[AbilityLifecycleCallback使用示例](#abilitylifecyclecallback使用示例)。 480 481### AbilityLifecycleCallback使用示例 482 483本示例展示了生命周期监听机制的部分使用场景: 4841. 在[AbilityStage](../../application-models/abilitystage.md)创建时注册监听。 4852. 在[AbilityStage](../../application-models/abilitystage.md)销毁时注销监听。 4863. 监听到对应UIAbility创建时加载资源,监听到对应UIAbility销毁时释放资源。 4874. 在UIAbility创建、销毁及前后台状态切换时,记录事件并向外发送通知。 488 489```ts 490// 以MyStage.ets文件为例,使用AbilityLifecycleCallback监听UIAbility生命周期 491import { AbilityLifecycleCallback, AbilityStage, application, UIAbility } from "@kit.AbilityKit"; 492import { hilog } from '@kit.PerformanceAnalysisKit'; 493import { JSON } from "@kit.ArkTS"; 494import { window } from "@kit.ArkUI"; 495import { BusinessError } from "@kit.BasicServicesKit"; 496 497const DOMAIN = 0x0000; 498const TAG = 'testTag'; 499 500function loadContent() { 501 // 加载数据 502} 503 504function releaseContent() { 505 // 释放数据 506} 507 508function recordAbilityEvent(abilityName: string) { 509 // 执行打点 510} 511 512function publishEvent() { 513 // 对外发布通知 514} 515 516let abilityLifecycleCallback: AbilityLifecycleCallback = { 517 onAbilityCreate(ability: UIAbility) { 518 hilog.info(DOMAIN, TAG, 'onAbilityCreate: ' + ability.context.abilityInfo.name); 519 // UIAbility事件打点记录 520 recordAbilityEvent(ability.context.abilityInfo.name); 521 // 模拟入口UIAbility创建时,加载资源对外发布通知 522 if (ability.context.abilityInfo.name === 'EntryAbility') { 523 loadContent(); 524 publishEvent(); 525 } 526 }, 527 onWindowStageCreate(ability: UIAbility, windowStage: window.WindowStage) { 528 hilog.info(DOMAIN, TAG, 'AbilityLifecycleCallback onWindowStageCreate.'); 529 }, 530 onWindowStageActive(ability: UIAbility, windowStage: window.WindowStage) { 531 hilog.info(DOMAIN, TAG, 'AbilityLifecycleCallback onWindowStageActive.'); 532 }, 533 onWindowStageInactive(ability: UIAbility, windowStage: window.WindowStage) { 534 hilog.info(DOMAIN, TAG, 'AbilityLifecycleCallback onWindowStageInactive.'); 535 }, 536 onWindowStageDestroy(ability: UIAbility, windowStage: window.WindowStage) { 537 hilog.info(DOMAIN, TAG, 'AbilityLifecycleCallback onWindowStageDestroy.'); 538 }, 539 onAbilityDestroy(ability: UIAbility) { 540 hilog.info(DOMAIN, TAG, 'onAbilityDestroy: ' + ability.context.abilityInfo.name); 541 recordAbilityEvent(ability.context.abilityInfo.name); 542 // 模拟入口UIAbility销毁时,释放资源 543 if (ability.context.abilityInfo.name === 'EntryAbility') { 544 releaseContent(); 545 publishEvent(); 546 } 547 }, 548 onAbilityForeground(ability: UIAbility) { 549 hilog.info(DOMAIN, TAG, 'AbilityLifecycleCallback onAbilityForeground.'); 550 recordAbilityEvent(ability.context.abilityInfo.name); 551 if (ability.context.abilityInfo.name === 'EntryAbility') { 552 publishEvent(); 553 } 554 }, 555 onAbilityBackground(ability: UIAbility) { 556 hilog.info(DOMAIN, TAG, 'AbilityLifecycleCallback onAbilityBackground.'); 557 recordAbilityEvent(ability.context.abilityInfo.name); 558 if (ability.context.abilityInfo.name === 'EntryAbility') { 559 publishEvent(); 560 } 561 }, 562 onAbilityContinue(ability: UIAbility) { 563 hilog.info(DOMAIN, TAG, 'AbilityLifecycleCallback onAbilityContinue.'); 564 }, 565 onNewWant(ability: UIAbility) { 566 hilog.info(DOMAIN, TAG, 'AbilityLifecycleCallback onNewWant'); 567 }, 568 onWillNewWant(ability: UIAbility) { 569 hilog.info(DOMAIN, TAG, 'AbilityLifecycleCallback onWillNewWant'); 570 }, 571 onAbilityWillCreate(ability: UIAbility) { 572 hilog.info(DOMAIN, TAG, 'AbilityLifecycleCallback onAbilityWillCreate'); 573 }, 574 onWindowStageWillCreate(ability: UIAbility, windowStage: window.WindowStage) { 575 hilog.info(DOMAIN, TAG, 'AbilityLifecycleCallback onWindowStageWillCreate'); 576 }, 577 onWindowStageWillDestroy(ability: UIAbility, windowStage: window.WindowStage) { 578 hilog.info(DOMAIN, TAG, 'AbilityLifecycleCallback onWindowStageWillDestroy'); 579 }, 580 onAbilityWillDestroy(ability: UIAbility) { 581 hilog.info(DOMAIN, TAG, 'AbilityLifecycleCallback onAbilityWillDestroy'); 582 }, 583 onAbilityWillForeground(ability: UIAbility) { 584 hilog.info(DOMAIN, TAG, 'AbilityLifecycleCallback onAbilityWillForeground'); 585 }, 586 onAbilityWillBackground(ability: UIAbility) { 587 hilog.info(DOMAIN, TAG, 'AbilityLifecycleCallback onAbilityWillBackground'); 588 }, 589 onAbilityWillContinue(ability: UIAbility) { 590 hilog.info(DOMAIN, TAG, 'AbilityLifecycleCallback onAbilityWillContinue.'); 591 }, 592 onWindowStageWillRestore(ability: UIAbility, windowStage: window.WindowStage) { 593 hilog.info(DOMAIN, TAG, 'AbilityLifecycleCallback onWindowStageWillRestore.'); 594 }, 595 onWindowStageRestore(ability: UIAbility, windowStage: window.WindowStage) { 596 hilog.info(DOMAIN, TAG, 'AbilityLifecycleCallback onWindowStageRestore.'); 597 }, 598 onAbilityWillSaveState(ability: UIAbility) { 599 hilog.info(DOMAIN, TAG, 'AbilityLifecycleCallback onAbilityWillSaveState.'); 600 }, 601 onAbilitySaveState(ability: UIAbility) { 602 hilog.info(DOMAIN, TAG, 'AbilityLifecycleCallback onAbilitySaveState.'); 603 } 604}; 605 606let lifecycleId = -1; // 保存监听id 607 608export default class MyStage extends AbilityStage { 609 onCreate(): void { 610 hilog.info(DOMAIN, TAG, 'AbilityStage onCreate') 611 612 // AbilityStage创建时注册UIAbility生命周期监听,并把监听id保存起来 613 try { 614 let applicationContext = application.getApplicationContext(); 615 lifecycleId = applicationContext.on('abilityLifecycle', abilityLifecycleCallback); 616 } catch (e) { 617 hilog.error(DOMAIN, TAG, `register abilityLifecycle failed: ${JSON.stringify(e)}`); 618 } 619 } 620 621 onDestroy(): void { 622 // AbilityStage销毁时取消UIAbility生命周期监听注册 623 let applicationContext = application.getApplicationContext(); 624 applicationContext.off('abilityLifecycle', lifecycleId).catch((e: BusinessError) => { 625 hilog.error(DOMAIN, TAG, `unregister abilityLifecycle failed: ${JSON.stringify(e)}`); 626 }); 627 } 628} 629``` 630 631```ts 632// 以EntryAbility.ets为例,展示应用入口UIAbility 633import { AbilityConstant, ConfigurationConstant, UIAbility, Want } from '@kit.AbilityKit'; 634import { hilog } from '@kit.PerformanceAnalysisKit'; 635import { window } from '@kit.ArkUI'; 636 637const DOMAIN = 0x0000; 638const TAG = 'testTag'; 639 640export default class EntryAbility extends UIAbility { 641 onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { 642 this.context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET); 643 hilog.info(DOMAIN, TAG, 'EntryAbility onCreate'); 644 } 645 646 onDestroy(): void { 647 hilog.info(DOMAIN, TAG, 'EntryAbility onDestroy'); 648 } 649 650 onWindowStageCreate(windowStage: window.WindowStage): void { 651 // 主窗创建 652 hilog.info(DOMAIN, TAG, 'EntryAbility onWindowStageCreate'); 653 654 windowStage.loadContent('pages/Index', (err) => { 655 if (err.code) { 656 hilog.error(DOMAIN, TAG, 'Failed to load the content. Cause: %{public}s', JSON.stringify(err)); 657 return; 658 } 659 hilog.info(DOMAIN, TAG, 'Succeeded in loading the content.'); 660 }); 661 } 662 663 onWindowStageDestroy(): void { 664 // 主窗销毁 665 hilog.info(DOMAIN, TAG, 'EntryAbility onWindowStageDestroy'); 666 } 667 668 onForeground(): void { 669 // UIAbility切换到前台 670 hilog.info(DOMAIN, TAG, 'EntryAbility onForeground'); 671 } 672 673 onBackground(): void { 674 // UIAbility切换到后台 675 hilog.info(DOMAIN, TAG, 'EntryAbility onBackground'); 676 } 677} 678```