• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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