1# @ohos.app.ability.abilityLifecycleCallback (AbilityLifecycleCallback) 2 3AbilityLifecycleCallback模块提供应用上下文[ApplicationContext](js-apis-inner-application-applicationContext.md)的生命周期发生变化时触发相应回调的能力,包括[onAbilityCreate](#abilitylifecyclecallbackonabilitycreate)、[onWindowStageCreate](#abilitylifecyclecallbackonwindowstagecreate)、[onWindowStageActive](#abilitylifecyclecallbackonwindowstageactive)、[onWindowStageInactive](#abilitylifecyclecallbackonwindowstageinactive)、[onWindowStageDestroy](#abilitylifecyclecallbackonwindowstagedestroy)、[onAbilityDestroy](#abilitylifecyclecallbackonabilitydestroy)、[onAbilityForeground](#abilitylifecyclecallbackonabilityforeground)、[onAbilityBackground](#abilitylifecyclecallbackonabilitybackground)、[onAbilityContinue](#abilitylifecyclecallbackonabilitycontinue)方法。 4 5> **说明:** 6> 7> 本模块首批接口从API version 9 开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8> 本模块接口仅可在Stage模型下使用。 9 10## 导入模块 11 12```ts 13import AbilityLifecycleCallback from '@ohos.app.ability.AbilityLifecycleCallback'; 14``` 15 16## AbilityLifecycleCallback.onAbilityCreate 17 18onAbilityCreate(ability: UIAbility): void; 19 20注册监听应用上下文的生命周期后,在ability创建时触发回调。 21 22**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore 23 24**参数:** 25 26 | 参数名 | 类型 | 必填 | 说明 | 27 | -------- | -------- | -------- | -------- | 28 | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 当前Ability对象 | 29 30**示例:** 31```ts 32import AbilityLifecycleCallback from '@ohos.app.ability.AbilityLifecycleCallback'; 33 34let abilityLifecycleCallback: AbilityLifecycleCallback = { 35 onAbilityCreate(ability){ 36 console.log('AbilityLifecycleCallback onAbilityCreate.'); 37 } 38}; 39``` 40 41## AbilityLifecycleCallback.onWindowStageCreate 42 43onWindowStageCreate(ability: UIAbility, windowStage: window.WindowStage): void; 44 45注册监听应用上下文的生命周期后,在windowStage创建时触发回调。 46 47**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore 48 49**参数:** 50 51 | 参数名 | 类型 | 必填 | 说明 | 52 | -------- | -------- | -------- | -------- | 53 | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 当前Ability对象 | 54 | windowStage | [window.WindowStage](js-apis-window.md#windowstage9) | 是 | 当前WindowStage对象 | 55 56**示例:** 57```ts 58import AbilityLifecycleCallback from '@ohos.app.ability.AbilityLifecycleCallback'; 59 60let abilityLifecycleCallback: AbilityLifecycleCallback = { 61 onWindowStageCreate(ability, windowStage){ 62 console.log('AbilityLifecycleCallback onWindowStageCreate.'); 63 } 64}; 65``` 66 67## AbilityLifecycleCallback.onWindowStageActive 68 69onWindowStageActive(ability: UIAbility, windowStage: window.WindowStage): void; 70 71注册监听应用上下文的生命周期后,在windowStage获焦时触发回调。 72 73**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore 74 75**参数:** 76 77 | 参数名 | 类型 | 必填 | 说明 | 78 | -------- | -------- | -------- | -------- | 79 | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 当前Ability对象 | 80 | windowStage | [window.WindowStage](js-apis-window.md#windowstage9) | 是 | 当前WindowStage对象 | 81 82**示例:** 83```ts 84import AbilityLifecycleCallback from '@ohos.app.ability.AbilityLifecycleCallback'; 85 86let abilityLifecycleCallback: AbilityLifecycleCallback = { 87 onWindowStageActive(ability, windowStage){ 88 console.log('AbilityLifecycleCallback onWindowStageActive.'); 89 } 90}; 91``` 92 93## AbilityLifecycleCallback.onWindowStageInactive 94 95onWindowStageInactive(ability: UIAbility, windowStage: window.WindowStage): void; 96 97注册监听应用上下文的生命周期后,在windowStage失焦时触发回调。 98 99**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore 100 101**参数:** 102 103 | 参数名 | 类型 | 必填 | 说明 | 104 | -------- | -------- | -------- | -------- | 105 | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 当前Ability对象 | 106 | windowStage | [window.WindowStage](js-apis-window.md#windowstage9) | 是 | 当前WindowStage对象 | 107 108**示例:** 109```ts 110import AbilityLifecycleCallback from '@ohos.app.ability.AbilityLifecycleCallback'; 111 112let abilityLifecycleCallback: AbilityLifecycleCallback = { 113 onWindowStageInactive(ability, windowStage){ 114 console.log('AbilityLifecycleCallback onWindowStageInactive.'); 115 } 116}; 117``` 118 119## AbilityLifecycleCallback.onWindowStageDestroy 120 121onWindowStageDestroy(ability: UIAbility, windowStage: window.WindowStage): void; 122 123注册监听应用上下文的生命周期后,在windowStage销毁时触发回调。 124 125**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore 126 127**参数:** 128 129 | 参数名 | 类型 | 必填 | 说明 | 130 | -------- | -------- | -------- | -------- | 131 | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 当前Ability对象 | 132 | windowStage | [window.WindowStage](js-apis-window.md#windowstage9) | 是 | 当前WindowStage对象 | 133 134**示例:** 135```ts 136import AbilityLifecycleCallback from '@ohos.app.ability.AbilityLifecycleCallback'; 137 138let abilityLifecycleCallback: AbilityLifecycleCallback = { 139 onWindowStageDestroy(ability, windowStage){ 140 console.log('AbilityLifecycleCallback onWindowStageDestroy.'); 141 } 142}; 143``` 144 145## AbilityLifecycleCallback.onAbilityDestroy 146 147onAbilityDestroy(ability: UIAbility): void; 148 149注册监听应用上下文的生命周期后,在ability销毁时触发回调。 150 151**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore 152 153**参数:** 154 155 | 参数名 | 类型 | 必填 | 说明 | 156 | -------- | -------- | -------- | -------- | 157 | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 当前Ability对象 | 158 159**示例:** 160```ts 161import AbilityLifecycleCallback from '@ohos.app.ability.AbilityLifecycleCallback'; 162 163let abilityLifecycleCallback: AbilityLifecycleCallback = { 164 onAbilityDestroy(ability){ 165 console.log('AbilityLifecycleCallback onAbilityDestroy.'); 166 } 167}; 168``` 169 170## AbilityLifecycleCallback.onAbilityForeground 171 172onAbilityForeground(ability: UIAbility): void; 173 174注册监听应用上下文的生命周期后,在ability的状态从后台转到前台时触发回调。 175 176**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore 177 178**参数:** 179 180 | 参数名 | 类型 | 必填 | 说明 | 181 | -------- | -------- | -------- | -------- | 182 | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 当前Ability对象 | 183 184**示例:** 185```ts 186import AbilityLifecycleCallback from '@ohos.app.ability.AbilityLifecycleCallback'; 187 188let abilityLifecycleCallback: AbilityLifecycleCallback = { 189 onAbilityForeground(ability){ 190 console.log('AbilityLifecycleCallback onAbilityForeground.'); 191 } 192}; 193``` 194 195## AbilityLifecycleCallback.onAbilityBackground 196 197onAbilityBackground(ability: UIAbility): void; 198 199注册监听应用上下文的生命周期后,在ability的状态从前台转到后台时触发回调。 200 201**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore 202 203**参数:** 204 205 | 参数名 | 类型 | 必填 | 说明 | 206 | -------- | -------- | -------- | -------- | 207 | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 当前Ability对象 | 208 209**示例:** 210```ts 211import AbilityLifecycleCallback from '@ohos.app.ability.AbilityLifecycleCallback'; 212 213let abilityLifecycleCallback: AbilityLifecycleCallback = { 214 onAbilityBackground(ability){ 215 console.log('AbilityLifecycleCallback onAbilityBackground.'); 216 } 217}; 218``` 219 220## AbilityLifecycleCallback.onAbilityContinue 221 222onAbilityContinue(ability: UIAbility): void; 223 224注册监听应用上下文的生命周期后,在ability迁移时触发回调。 225 226**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore 227 228**参数:** 229 230 | 参数名 | 类型 | 必填 | 说明 | 231 | -------- | -------- | -------- | -------- | 232 | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 当前Ability对象 | 233 234**示例:** 235```ts 236import AbilityLifecycleCallback from '@ohos.app.ability.AbilityLifecycleCallback'; 237 238let abilityLifecycleCallback: AbilityLifecycleCallback = { 239 onAbilityContinue(ability){ 240 console.log('AbilityLifecycleCallback onAbilityContinue.'); 241 } 242}; 243``` 244 245## AbilityLifecycleCallback使用 246 247**示例:** 248GlobalContext.ts 249```ts 250// 构造单例对象 251export class GlobalContext { 252 private constructor() {} 253 private static instance: GlobalContext; 254 private _objects = new Map<string, Object>(); 255 256 public static getContext(): GlobalContext { 257 if (!GlobalContext.instance) { 258 GlobalContext.instance = new GlobalContext(); 259 } 260 return GlobalContext.instance; 261 } 262 263 getObject(value: string): Object | undefined { 264 return this._objects.get(value); 265 } 266 267 setObject(key: string, objectClass: Object): void { 268 this._objects.set(key, objectClass); 269 } 270} 271``` 272 273MyFirstAbility.ts 274```ts 275import AbilityLifecycleCallback from '@ohos.app.ability.AbilityLifecycleCallback'; 276import AbilityStage from '@ohos.app.ability.AbilityStage'; 277import UIAbility from '@ohos.app.ability.UIAbility'; 278import { GlobalContext } from '../GlobalContext' 279 280// 声明ability生命周期回调,需配置所有回调后才可以在applicationContext注册 281let abilityLifecycleCallback: AbilityLifecycleCallback = { 282 onAbilityCreate(ability){ 283 console.log('AbilityLifecycleCallback onAbilityCreate.'); 284 }, 285 onWindowStageCreate(ability, windowStage){ 286 console.log('AbilityLifecycleCallback onWindowStageCreate.'); 287 }, 288 onWindowStageActive(ability, windowStage){ 289 console.log('AbilityLifecycleCallback onWindowStageActive.'); 290 }, 291 onWindowStageInactive(ability, windowStage){ 292 console.log('AbilityLifecycleCallback onWindowStageInactive.'); 293 }, 294 onWindowStageDestroy(ability, windowStage){ 295 console.log('AbilityLifecycleCallback onWindowStageDestroy.'); 296 }, 297 onAbilityDestroy(ability){ 298 console.log('AbilityLifecycleCallback onAbilityDestroy.'); 299 }, 300 onAbilityForeground(ability){ 301 console.log('AbilityLifecycleCallback onAbilityForeground.'); 302 }, 303 onAbilityBackground(ability){ 304 console.log('AbilityLifecycleCallback onAbilityBackground.'); 305 }, 306 onAbilityContinue(ability){ 307 console.log('AbilityLifecycleCallback onAbilityContinue.'); 308 } 309}; 310 311export default class MyFirstAbility extends UIAbility { 312 onCreate() { 313 console.log('MyAbilityStage onCreate'); 314 // 1.通过context属性获取applicationContext 315 let applicationContext = this.context.getApplicationContext(); 316 // 2.通过applicationContext注册监听应用内生命周期 317 try { 318 let lifecycleId = applicationContext.on('abilityLifecycle', abilityLifecycleCallback); 319 GlobalContext.getContext().setObject("lifecycleId", lifecycleId); 320 console.log(`registerAbilityLifecycleCallback lifecycleId: ${globalThis.lifecycleId}`); 321 } catch (paramError) { 322 console.error(`error: ${paramError.code}, ${paramError.message}`); 323 } 324 } 325} 326``` 327 328MySecondAbility.ts 329```ts 330import UIAbility from '@ohos.app.ability.UIAbility'; 331import { GlobalContext } from '../GlobalContext' 332 333export default class MySecondAbility extends UIAbility { 334 onDestroy() { 335 let applicationContext = this.context.getApplicationContext(); 336 let lifecycleId = GlobalContext.getContext().getObject("lifecycleId") as number; 337 // 3.通过applicationContext注销监听应用内生命周期 338 applicationContext.off('abilityLifecycle', lifecycleId, (error) => { 339 if (error && error.code !== 0) { 340 console.error(`unregisterAbilityLifecycleCallback fail, error: ${JSON.stringify(error)}`); 341 } else { 342 console.log('unregisterAbilityLifecycleCallback success.'); 343 } 344 }); 345 } 346} 347```