• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.app.ability.abilityLifecycleCallback (AbilityLifecycleCallback)
2
3AbilityLifecycleCallback模块提供应用上下文[ApplicationContext](js-apis-inner-application-applicationContext.md)的生命周期发生变化时触发相应回调的能力,包括[onAbilityCreate](#abilitylifecyclecallbackonabilitycreate)、[onWindowStageCreate](#abilitylifecyclecallbackonwindowstagecreate)、[onWindowStageActive](#abilitylifecyclecallbackonwindowstageactive)、[onWindowStageInactive](#abilitylifecyclecallbackonwindowstageinactive)、[onWindowStageDestroy](#abilitylifecyclecallbackonwindowstagedestroy)、[onAbilityDestroy](#abilitylifecyclecallbackonabilitydestroy)、[onAbilityForeground](#abilitylifecyclecallbackonabilityforeground)、[onAbilityBackground](#abilitylifecyclecallbackonabilitybackground)、[onAbilityContinue](#abilitylifecyclecallbackonabilitycontinue)方法。
4
5> **说明:**
6>
7> 本模块首批接口从API version 9 开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8> 本模块接口仅可在Stage模型下使用。
9
10## 导入模块
11
12```ts
13import AbilityLifecycleCallback from '@ohos.app.ability.AbilityLifecycleCallback';
14```
15
16## AbilityLifecycleCallback.onAbilityCreate
17
18onAbilityCreate(ability: UIAbility): void;
19
20注册监听应用上下文的生命周期后,在ability创建时触发回调。
21
22**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
23
24**参数:**
25
26  | 参数名 | 类型 | 必填 | 说明 |
27  | -------- | -------- | -------- | -------- |
28  | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 当前Ability对象 |
29
30**示例:**
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
45注册监听应用上下文的生命周期后,在windowStage创建时触发回调。
46
47**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
48
49**参数:**
50
51  | 参数名 | 类型 | 必填 | 说明 |
52  | -------- | -------- | -------- | -------- |
53  | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 当前Ability对象 |
54  | windowStage | [window.WindowStage](js-apis-window.md#windowstage9) | 是 | 当前WindowStage对象 |
55
56**示例:**
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
71注册监听应用上下文的生命周期后,在windowStage获焦时触发回调。
72
73**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
74
75**参数:**
76
77  | 参数名 | 类型 | 必填 | 说明 |
78  | -------- | -------- | -------- | -------- |
79  | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 当前Ability对象 |
80  | windowStage | [window.WindowStage](js-apis-window.md#windowstage9) | 是 | 当前WindowStage对象 |
81
82**示例:**
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
97注册监听应用上下文的生命周期后,在windowStage失焦时触发回调。
98
99**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
100
101**参数:**
102
103  | 参数名 | 类型 | 必填 | 说明 |
104  | -------- | -------- | -------- | -------- |
105  | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 当前Ability对象 |
106  | windowStage | [window.WindowStage](js-apis-window.md#windowstage9) | 是 | 当前WindowStage对象 |
107
108**示例:**
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
123注册监听应用上下文的生命周期后,在windowStage销毁时触发回调。
124
125**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
126
127**参数:**
128
129  | 参数名 | 类型 | 必填 | 说明 |
130  | -------- | -------- | -------- | -------- |
131  | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 当前Ability对象 |
132  | windowStage | [window.WindowStage](js-apis-window.md#windowstage9) | 是 | 当前WindowStage对象 |
133
134**示例:**
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
149注册监听应用上下文的生命周期后,在ability销毁时触发回调。
150
151**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
152
153**参数:**
154
155  | 参数名 | 类型 | 必填 | 说明 |
156  | -------- | -------- | -------- | -------- |
157  | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 当前Ability对象 |
158
159**示例:**
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
174注册监听应用上下文的生命周期后,在ability的状态从后台转到前台时触发回调。
175
176**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
177
178**参数:**
179
180  | 参数名 | 类型 | 必填 | 说明 |
181  | -------- | -------- | -------- | -------- |
182  | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 当前Ability对象 |
183
184**示例:**
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
199注册监听应用上下文的生命周期后,在ability的状态从前台转到后台时触发回调。
200
201**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
202
203**参数:**
204
205  | 参数名 | 类型 | 必填 | 说明 |
206  | -------- | -------- | -------- | -------- |
207  | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 当前Ability对象 |
208
209**示例:**
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
224注册监听应用上下文的生命周期后,在ability迁移时触发回调。
225
226**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
227
228**参数:**
229
230  | 参数名 | 类型 | 必填 | 说明 |
231  | -------- | -------- | -------- | -------- |
232  | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 当前Ability对象 |
233
234**示例:**
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## AbilityLifecycleCallback使用
246
247**示例:**
248GlobalContext.ts
249```ts
250// 构造单例对象
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// 声明ability生命周期回调,需配置所有回调后才可以在applicationContext注册
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.通过context属性获取applicationContext
315        let applicationContext = this.context.getApplicationContext();
316        // 2.通过applicationContext注册监听应用内生命周期
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.通过applicationContext注销监听应用内生命周期
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```