• 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
32import AbilityLifecycleCallback from '@ohos.app.ability.AbilityLifecycleCallback';
33
34let abilityLifecycleCallback: 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
58import AbilityLifecycleCallback from '@ohos.app.ability.AbilityLifecycleCallback';
59
60let abilityLifecycleCallback: AbilityLifecycleCallback =  {
61    onWindowStageCreate(ability, windowStage){
62        console.log('AbilityLifecycleCallback onWindowStageCreate.');
63    }
64};
65```
66
67## AbilityLifecycleCallback.onWindowStageActive
68
69onWindowStageActive(ability: UIAbility, windowStage: window.WindowStage): void;
70
71Called when the window stage of an ability gains focus.
72
73**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore
74
75**Parameters**
76
77  | Name| Type| Mandatory| Description|
78  | -------- | -------- | -------- | -------- |
79  | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | Yes| **Ability** object.|
80  | windowStage | [window.WindowStage](js-apis-window.md#windowstage9) | Yes| **WindowStage** object.|
81
82**Example**
83```ts
84import AbilityLifecycleCallback from '@ohos.app.ability.AbilityLifecycleCallback';
85
86let abilityLifecycleCallback: AbilityLifecycleCallback =  {
87    onWindowStageActive(ability, windowStage){
88        console.log('AbilityLifecycleCallback onWindowStageActive.');
89    }
90};
91```
92
93## AbilityLifecycleCallback.onWindowStageInactive
94
95onWindowStageInactive(ability: UIAbility, windowStage: window.WindowStage): void;
96
97Called when the window stage of an ability loses focus.
98
99**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore
100
101**Parameters**
102
103  | Name| Type| Mandatory| Description|
104  | -------- | -------- | -------- | -------- |
105  | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | Yes| **Ability** object.|
106  | windowStage | [window.WindowStage](js-apis-window.md#windowstage9) | Yes| **WindowStage** object.|
107
108**Example**
109```ts
110import AbilityLifecycleCallback from '@ohos.app.ability.AbilityLifecycleCallback';
111
112let abilityLifecycleCallback: AbilityLifecycleCallback =  {
113    onWindowStageInactive(ability, windowStage){
114        console.log('AbilityLifecycleCallback onWindowStageInactive.');
115    }
116};
117```
118
119## AbilityLifecycleCallback.onWindowStageDestroy
120
121onWindowStageDestroy(ability: UIAbility, windowStage: window.WindowStage): void;
122
123Called when the window stage of an ability is destroyed.
124
125**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore
126
127**Parameters**
128
129  | Name| Type| Mandatory| Description|
130  | -------- | -------- | -------- | -------- |
131  | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | Yes| **Ability** object.|
132  | windowStage | [window.WindowStage](js-apis-window.md#windowstage9) | Yes| **WindowStage** object.|
133
134**Example**
135```ts
136import AbilityLifecycleCallback from '@ohos.app.ability.AbilityLifecycleCallback';
137
138let abilityLifecycleCallback: AbilityLifecycleCallback =  {
139    onWindowStageDestroy(ability, windowStage){
140        console.log('AbilityLifecycleCallback onWindowStageDestroy.');
141    }
142};
143```
144
145## AbilityLifecycleCallback.onAbilityDestroy
146
147onAbilityDestroy(ability: UIAbility): void;
148
149Called when an ability is destroyed.
150
151**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore
152
153**Parameters**
154
155  | Name| Type| Mandatory| Description|
156  | -------- | -------- | -------- | -------- |
157  | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | Yes| **Ability** object.|
158
159**Example**
160```ts
161import AbilityLifecycleCallback from '@ohos.app.ability.AbilityLifecycleCallback';
162
163let abilityLifecycleCallback: AbilityLifecycleCallback =  {
164    onAbilityDestroy(ability){
165        console.log('AbilityLifecycleCallback onAbilityDestroy.');
166    }
167};
168```
169
170## AbilityLifecycleCallback.onAbilityForeground
171
172onAbilityForeground(ability: UIAbility): void;
173
174Called when an ability is switched from the background to the foreground.
175
176**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore
177
178**Parameters**
179
180  | Name| Type| Mandatory| Description|
181  | -------- | -------- | -------- | -------- |
182  | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | Yes| **Ability** object.|
183
184**Example**
185```ts
186import AbilityLifecycleCallback from '@ohos.app.ability.AbilityLifecycleCallback';
187
188let abilityLifecycleCallback: AbilityLifecycleCallback =  {
189    onAbilityForeground(ability){
190        console.log('AbilityLifecycleCallback onAbilityForeground.');
191    }
192};
193```
194
195## AbilityLifecycleCallback.onAbilityBackground
196
197onAbilityBackground(ability: UIAbility): void;
198
199Called when an ability is switched from the foreground to the background.
200
201**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore
202
203**Parameters**
204
205  | Name| Type| Mandatory| Description|
206  | -------- | -------- | -------- | -------- |
207  | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | Yes| **Ability** object.|
208
209**Example**
210```ts
211import AbilityLifecycleCallback from '@ohos.app.ability.AbilityLifecycleCallback';
212
213let abilityLifecycleCallback: AbilityLifecycleCallback =  {
214    onAbilityBackground(ability){
215        console.log('AbilityLifecycleCallback onAbilityBackground.');
216    }
217};
218```
219
220## AbilityLifecycleCallback.onAbilityContinue
221
222onAbilityContinue(ability: UIAbility): void;
223
224Called when an ability is continued on another device.
225
226**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore
227
228**Parameters**
229
230  | Name| Type| Mandatory| Description|
231  | -------- | -------- | -------- | -------- |
232  | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | Yes| **Ability** object.|
233
234**Example**
235```ts
236import AbilityLifecycleCallback from '@ohos.app.ability.AbilityLifecycleCallback';
237
238let abilityLifecycleCallback: AbilityLifecycleCallback =  {
239    onAbilityContinue(ability){
240        console.log('AbilityLifecycleCallback onAbilityContinue.');
241    }
242};
243```
244
245## Usage of AbilityLifecycleCallback
246
247**Example**
248GlobalContext.ts
249```ts
250// Construct a singleton object.
251export class GlobalContext {
252  private constructor() {}
253  private static instance: GlobalContext;
254  private _objects = new Map<string, Object>();
255
256  public static getContext(): GlobalContext {
257    if (!GlobalContext.instance) {
258      GlobalContext.instance = new GlobalContext();
259    }
260    return GlobalContext.instance;
261  }
262
263  getObject(value: string): Object | undefined {
264    return this._objects.get(value);
265  }
266
267  setObject(key: string, objectClass: Object): void {
268    this._objects.set(key, objectClass);
269  }
270}
271```
272
273MyFirstAbility.ts
274```ts
275import AbilityLifecycleCallback from '@ohos.app.ability.AbilityLifecycleCallback';
276import AbilityStage from '@ohos.app.ability.AbilityStage';
277import UIAbility from '@ohos.app.ability.UIAbility';
278import { GlobalContext } from '../GlobalContext'
279
280// Declare the ability lifecycle callbacks. A listener can be registered in applicationContext only after all the callbacks are configured.
281let abilityLifecycleCallback: AbilityLifecycleCallback = {
282    onAbilityCreate(ability){
283        console.log('AbilityLifecycleCallback onAbilityCreate.');
284    },
285    onWindowStageCreate(ability, windowStage){
286        console.log('AbilityLifecycleCallback onWindowStageCreate.');
287    },
288    onWindowStageActive(ability, windowStage){
289        console.log('AbilityLifecycleCallback onWindowStageActive.');
290    },
291    onWindowStageInactive(ability, windowStage){
292        console.log('AbilityLifecycleCallback onWindowStageInactive.');
293    },
294    onWindowStageDestroy(ability, windowStage){
295        console.log('AbilityLifecycleCallback onWindowStageDestroy.');
296    },
297    onAbilityDestroy(ability){
298        console.log('AbilityLifecycleCallback onAbilityDestroy.');
299    },
300    onAbilityForeground(ability){
301        console.log('AbilityLifecycleCallback onAbilityForeground.');
302    },
303    onAbilityBackground(ability){
304        console.log('AbilityLifecycleCallback onAbilityBackground.');
305    },
306    onAbilityContinue(ability){
307        console.log('AbilityLifecycleCallback onAbilityContinue.');
308    }
309};
310
311export default class MyFirstAbility extends UIAbility {
312    onCreate() {
313        console.log('MyAbilityStage onCreate');
314        // 1. Obtain applicationContext through the context attribute.
315        let applicationContext = this.context.getApplicationContext();
316        // 2. Register the listener for the ability lifecycle changes through the applicationContext object.
317        try {
318            let lifecycleId = applicationContext.on('abilityLifecycle', abilityLifecycleCallback);
319            GlobalContext.getContext().setObject("lifecycleId", lifecycleId);
320            console.log(`registerAbilityLifecycleCallback lifecycleId: ${globalThis.lifecycleId}`);
321        } catch (paramError) {
322            console.error(`error: ${paramError.code}, ${paramError.message}`);
323        }
324    }
325}
326```
327
328MySecondAbility.ts
329```ts
330import UIAbility from '@ohos.app.ability.UIAbility';
331import { GlobalContext } from '../GlobalContext'
332
333export default class MySecondAbility extends UIAbility {
334    onDestroy() {
335        let applicationContext = this.context.getApplicationContext();
336        let lifecycleId = GlobalContext.getContext().getObject("lifecycleId") as number;
337        // 3. Deregister the listener for the ability lifecycle changes through the applicationContext object.
338        applicationContext.off('abilityLifecycle', lifecycleId, (error) => {
339            if (error && error.code !== 0) {
340                console.error(`unregisterAbilityLifecycleCallback fail, error: ${JSON.stringify(error)}`);
341            } else {
342                console.log('unregisterAbilityLifecycleCallback success.');
343            }
344        });
345    }
346}
347```
348