1# @ohos.app.ability.abilityLifecycleCallback (AbilityLifecycleCallback) 2 3The **AbilityLifecycleCallback** module defines the callbacks to receive lifecycle changes of [ApplicationContext](js-apis-inner-application-applicationContext.md). 4 5> **NOTE** 6> 7> The initial APIs of this module are supported since API version 9. Newly added APIs will be marked with a superscript to indicate their earliest API version. 8> 9> The APIs of this module can be used only in the stage model. 10 11## Modules to Import 12 13```ts 14import AbilityLifecycleCallback from '@ohos.app.ability.AbilityLifecycleCallback'; 15``` 16 17## AbilityLifecycleCallback.onAbilityCreate 18 19onAbilityCreate(ability: UIAbility): void 20 21Called when an ability is created. 22 23**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore 24 25**Parameters** 26 27 | Name| Type| Mandatory| Description| 28 | -------- | -------- | -------- | -------- | 29 | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | Yes| **Ability** object.| 30 31**Example** 32 33See [Usage of AbilityLifecycleCallback](#usage-of-abilitylifecyclecallback). 34 35## AbilityLifecycleCallback.onWindowStageCreate 36 37onWindowStageCreate(ability: UIAbility, windowStage: window.WindowStage): void 38 39Called when the window stage of an ability is created. 40 41**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore 42 43**Parameters** 44 45 | Name| Type| Mandatory| Description| 46 | -------- | -------- | -------- | -------- | 47 | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | Yes| **Ability** object.| 48 | windowStage | [window.WindowStage](js-apis-window.md#windowstage9) | Yes| **WindowStage** object.| 49 50**Example** 51 52See [Usage of AbilityLifecycleCallback](#usage-of-abilitylifecyclecallback). 53 54## AbilityLifecycleCallback.onWindowStageActive 55 56onWindowStageActive(ability: UIAbility, windowStage: window.WindowStage): void 57 58Called when the window stage of an ability gains focus. 59 60**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore 61 62**Parameters** 63 64 | Name| Type| Mandatory| Description| 65 | -------- | -------- | -------- | -------- | 66 | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | Yes| **Ability** object.| 67 | windowStage | [window.WindowStage](js-apis-window.md#windowstage9) | Yes| **WindowStage** object.| 68 69**Example** 70 71See [Usage of AbilityLifecycleCallback](#usage-of-abilitylifecyclecallback). 72 73## AbilityLifecycleCallback.onWindowStageInactive 74 75onWindowStageInactive(ability: UIAbility, windowStage: window.WindowStage): void 76 77Called when the window stage of an ability loses focus. 78 79**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore 80 81**Parameters** 82 83 | Name| Type| Mandatory| Description| 84 | -------- | -------- | -------- | -------- | 85 | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | Yes| **Ability** object.| 86 | windowStage | [window.WindowStage](js-apis-window.md#windowstage9) | Yes| **WindowStage** object.| 87 88**Example** 89 90See [Usage of AbilityLifecycleCallback](#usage-of-abilitylifecyclecallback). 91 92## AbilityLifecycleCallback.onWindowStageDestroy 93 94onWindowStageDestroy(ability: UIAbility, windowStage: window.WindowStage): void 95 96Called when the window stage of an ability is destroyed. 97 98**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore 99 100**Parameters** 101 102 | Name| Type| Mandatory| Description| 103 | -------- | -------- | -------- | -------- | 104 | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | Yes| **Ability** object.| 105 | windowStage | [window.WindowStage](js-apis-window.md#windowstage9) | Yes| **WindowStage** object.| 106 107**Example** 108 109See [Usage of AbilityLifecycleCallback](#usage-of-abilitylifecyclecallback). 110 111## AbilityLifecycleCallback.onAbilityDestroy 112 113onAbilityDestroy(ability: UIAbility): void 114 115Called when an ability is destroyed. 116 117**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore 118 119**Parameters** 120 121 | Name| Type| Mandatory| Description| 122 | -------- | -------- | -------- | -------- | 123 | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | Yes| **Ability** object.| 124 125**Example** 126 127See [Usage of AbilityLifecycleCallback](#usage-of-abilitylifecyclecallback). 128 129## AbilityLifecycleCallback.onAbilityForeground 130 131onAbilityForeground(ability: UIAbility): void 132 133Called when an ability is switched from the background to the foreground. 134 135**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore 136 137**Parameters** 138 139 | Name| Type| Mandatory| Description| 140 | -------- | -------- | -------- | -------- | 141 | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | Yes| **Ability** object.| 142 143**Example** 144 145See [Usage of AbilityLifecycleCallback](#usage-of-abilitylifecyclecallback). 146 147## AbilityLifecycleCallback.onAbilityBackground 148 149onAbilityBackground(ability: UIAbility): void 150 151Called when an ability is switched from the foreground to the background. 152 153**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore 154 155**Parameters** 156 157 | Name| Type| Mandatory| Description| 158 | -------- | -------- | -------- | -------- | 159 | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | Yes| **Ability** object.| 160 161**Example** 162 163See [Usage of AbilityLifecycleCallback](#usage-of-abilitylifecyclecallback). 164 165## AbilityLifecycleCallback.onAbilityContinue 166 167onAbilityContinue(ability: UIAbility): void 168 169Called when an ability is continued on another device. 170 171**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore 172 173**Parameters** 174 175 | Name| Type| Mandatory| Description| 176 | -------- | -------- | -------- | -------- | 177 | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | Yes| **Ability** object.| 178 179**Example** 180 181See [Usage of AbilityLifecycleCallback](#usage-of-abilitylifecyclecallback). 182 183## Usage of AbilityLifecycleCallback 184 185**Example** 186GlobalContext.ts 187Global context 188```ts 189// Construct a singleton object. 190export class GlobalContext { 191 private constructor() {} 192 private static instance: GlobalContext; 193 private _objects = new Map<string, Object>(); 194 195 public static getContext(): GlobalContext { 196 if (!GlobalContext.instance) { 197 GlobalContext.instance = new GlobalContext(); 198 } 199 return GlobalContext.instance; 200 } 201 202 getObject(value: string): Object | undefined { 203 return this._objects.get(value); 204 } 205 206 setObject(key: string, objectClass: Object): void { 207 this._objects.set(key, objectClass); 208 } 209} 210``` 211 212MyFirstAbility.ts 213First ability of the application 214```ts 215import AbilityLifecycleCallback from '@ohos.app.ability.AbilityLifecycleCallback'; 216import UIAbility from '@ohos.app.ability.UIAbility'; 217 218// Import GlobalContext. Use the actual path declared. 219import { GlobalContext } from '../GlobalContext' 220 221// Declare the ability lifecycle callbacks. A listener can be registered in applicationContext only after all the callbacks are configured. 222let abilityLifecycleCallback: AbilityLifecycleCallback = { 223 onAbilityCreate(ability){ 224 console.log('AbilityLifecycleCallback onAbilityCreate.'); 225 }, 226 onWindowStageCreate(ability, windowStage){ 227 console.log('AbilityLifecycleCallback onWindowStageCreate.'); 228 }, 229 onWindowStageActive(ability, windowStage){ 230 console.log('AbilityLifecycleCallback onWindowStageActive.'); 231 }, 232 onWindowStageInactive(ability, windowStage){ 233 console.log('AbilityLifecycleCallback onWindowStageInactive.'); 234 }, 235 onWindowStageDestroy(ability, windowStage){ 236 console.log('AbilityLifecycleCallback onWindowStageDestroy.'); 237 }, 238 onAbilityDestroy(ability){ 239 console.log('AbilityLifecycleCallback onAbilityDestroy.'); 240 }, 241 onAbilityForeground(ability){ 242 console.log('AbilityLifecycleCallback onAbilityForeground.'); 243 }, 244 onAbilityBackground(ability){ 245 console.log('AbilityLifecycleCallback onAbilityBackground.'); 246 }, 247 onAbilityContinue(ability){ 248 console.log('AbilityLifecycleCallback onAbilityContinue.'); 249 } 250}; 251 252export default class MyFirstAbility extends UIAbility { 253 onCreate() { 254 console.log('MyAbilityStage onCreate'); 255 // 1. Obtain applicationContext through the context attribute. 256 let applicationContext = this.context.getApplicationContext(); 257 // 2. Register the listener for the ability lifecycle changes through the applicationContext object. 258 try { 259 let lifecycleId = applicationContext.on('abilityLifecycle', abilityLifecycleCallback); 260 GlobalContext.getContext().setObject("lifecycleId", lifecycleId); 261 console.log(`registerAbilityLifecycleCallback lifecycleId: ${globalThis.lifecycleId}`); 262 } catch (paramError) { 263 console.error(`error: ${paramError.code}, ${paramError.message}`); 264 } 265 } 266} 267``` 268 269MySecondAbility.ts 270Second ability of the application 271```ts 272import UIAbility from '@ohos.app.ability.UIAbility'; 273 274// Import GlobalContext. Use the actual path declared. 275import { GlobalContext } from '../GlobalContext' 276 277export default class MySecondAbility extends UIAbility { 278 onDestroy() { 279 let applicationContext = this.context.getApplicationContext(); 280 let lifecycleId = GlobalContext.getContext().getObject("lifecycleId") as number; 281 // 3. Deregister the listener for the ability lifecycle changes through the applicationContext object. 282 applicationContext.off('abilityLifecycle', lifecycleId, (error) => { 283 if (error && error.code !== 0) { 284 console.error(`unregisterAbilityLifecycleCallback fail, error: ${JSON.stringify(error)}`); 285 } else { 286 console.log('unregisterAbilityLifecycleCallback success.'); 287 } 288 }); 289 } 290} 291``` 292