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