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