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