• 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
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