js-apis-app-ability-abilityLifecycleCallback.md 10.0 KB
Newer Older
Z
zengyawen 已提交
1
# @ohos.app.ability.abilityLifecycleCallback (AbilityLifecycleCallback)
D
donglin 已提交
2

D
donglin 已提交
3
AbilityLifecycleCallback模块提供应用上下文[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)方法。
D
donglin 已提交
4 5 6 7 8 9 10 11

> **说明:**
> 
> 本模块首批接口从API version 9 开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。  
> 本模块接口仅可在Stage模型下使用。

## 导入模块

M
m00512953 已提交
12
```ts
M
mingxihua 已提交
13
import AbilityLifecycleCallback from '@ohos.app.ability.AbilityLifecycleCallback';
D
donglin 已提交
14 15 16 17
```

## AbilityLifecycleCallback.onAbilityCreate

D
fix  
donglin 已提交
18
onAbilityCreate(ability: UIAbility): void;
D
donglin 已提交
19 20 21 22 23 24 25 26 27

注册监听应用上下文的生命周期后,在ability创建时触发回调。

**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore

**参数:**

  | 参数名 | 类型 | 必填 | 说明 | 
  | -------- | -------- | -------- | -------- |
D
donglin 已提交
28
  | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 当前Ability对象 | 
D
donglin 已提交
29

D
donglin 已提交
30 31 32 33
**示例:**
```ts
let abilityLifecycleCallback =  {
    onAbilityCreate(ability){
M
mingxihua 已提交
34
        console.log('AbilityLifecycleCallback onAbilityCreate.');  
D
donglin 已提交
35
    }
36
};
D
donglin 已提交
37
```
D
donglin 已提交
38 39 40

## AbilityLifecycleCallback.onWindowStageCreate

D
fix  
donglin 已提交
41
onWindowStageCreate(ability: UIAbility, windowStage: window.WindowStage): void;
D
donglin 已提交
42 43 44 45 46 47 48 49 50

注册监听应用上下文的生命周期后,在windowStage创建时触发回调。

**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore

**参数:**

  | 参数名 | 类型 | 必填 | 说明 | 
  | -------- | -------- | -------- | -------- |
D
donglin 已提交
51
  | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 当前Ability对象 |  
D
donglin 已提交
52
  | windowStage | [window.WindowStage](js-apis-window.md#windowstage9) | 是 | 当前WindowStage对象 |    
D
donglin 已提交
53

D
donglin 已提交
54 55 56 57
**示例:**
```ts
let abilityLifecycleCallback =  {
    onWindowStageCreate(ability, windowStage){
M
mingxihua 已提交
58
        console.log('AbilityLifecycleCallback onWindowStageCreate.');
D
donglin 已提交
59
    }
60
};
D
donglin 已提交
61
```
D
donglin 已提交
62 63 64

## AbilityLifecycleCallback.onWindowStageActive

D
fix  
donglin 已提交
65
onWindowStageActive(ability: UIAbility, windowStage: window.WindowStage): void;
D
donglin 已提交
66 67 68 69 70 71 72 73 74

注册监听应用上下文的生命周期后,在windowStage获焦时触发回调。

**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore

**参数:**

  | 参数名 | 类型 | 必填 | 说明 | 
  | -------- | -------- | -------- | -------- |
D
donglin 已提交
75
  | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 当前Ability对象 |  
D
donglin 已提交
76
  | windowStage | [window.WindowStage](js-apis-window.md#windowstage9) | 是 | 当前WindowStage对象 |    
D
donglin 已提交
77

D
donglin 已提交
78 79 80 81
**示例:**
```ts
let abilityLifecycleCallback =  {
    onWindowStageActive(ability, windowStage){
M
mingxihua 已提交
82
        console.log('AbilityLifecycleCallback onWindowStageActive.');
D
donglin 已提交
83
    }
84
};
D
donglin 已提交
85
```
D
donglin 已提交
86 87 88

## AbilityLifecycleCallback.onWindowStageInactive

D
fix  
donglin 已提交
89
onWindowStageInactive(ability: UIAbility, windowStage: window.WindowStage): void;
D
donglin 已提交
90 91 92 93 94 95 96 97 98

注册监听应用上下文的生命周期后,在windowStage失焦时触发回调。

**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore

**参数:**

  | 参数名 | 类型 | 必填 | 说明 | 
  | -------- | -------- | -------- | -------- |
D
donglin 已提交
99
  | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 当前Ability对象 |  
D
donglin 已提交
100
  | windowStage | [window.WindowStage](js-apis-window.md#windowstage9) | 是 | 当前WindowStage对象 |  
D
donglin 已提交
101

D
donglin 已提交
102 103 104 105
**示例:**
```ts
let abilityLifecycleCallback =  {
    onWindowStageInactive(ability, windowStage){
M
mingxihua 已提交
106
        console.log('AbilityLifecycleCallback onWindowStageInactive.');
D
donglin 已提交
107
    }
108
};
D
donglin 已提交
109
```
D
donglin 已提交
110 111 112

## AbilityLifecycleCallback.onWindowStageDestroy

D
fix  
donglin 已提交
113
onWindowStageDestroy(ability: UIAbility, windowStage: window.WindowStage): void;
D
donglin 已提交
114 115 116 117 118 119 120 121 122

注册监听应用上下文的生命周期后,在windowStage销毁时触发回调。

**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore

**参数:**

  | 参数名 | 类型 | 必填 | 说明 | 
  | -------- | -------- | -------- | -------- |
D
donglin 已提交
123
  | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 当前Ability对象 |  
D
donglin 已提交
124
  | windowStage | [window.WindowStage](js-apis-window.md#windowstage9) | 是 | 当前WindowStage对象 |  
D
donglin 已提交
125

D
donglin 已提交
126 127 128 129
**示例:**
```ts
let abilityLifecycleCallback =  {
    onWindowStageDestroy(ability, windowStage){
M
mingxihua 已提交
130
        console.log('AbilityLifecycleCallback onWindowStageDestroy.');
D
donglin 已提交
131
    }
132
};
D
donglin 已提交
133
```
D
donglin 已提交
134 135 136

## AbilityLifecycleCallback.onAbilityDestroy

D
fix  
donglin 已提交
137
onAbilityDestroy(ability: UIAbility): void;
D
donglin 已提交
138 139 140 141 142 143 144 145 146

注册监听应用上下文的生命周期后,在ability销毁时触发回调。

**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore

**参数:**

  | 参数名 | 类型 | 必填 | 说明 | 
  | -------- | -------- | -------- | -------- |
D
donglin 已提交
147
  | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 当前Ability对象 | 
D
donglin 已提交
148

D
donglin 已提交
149 150 151 152
**示例:**
```ts
let abilityLifecycleCallback =  {
    onAbilityDestroy(ability){
M
mingxihua 已提交
153
        console.log('AbilityLifecycleCallback onAbilityDestroy.');
D
donglin 已提交
154
    }
155
};
D
donglin 已提交
156
```
D
donglin 已提交
157 158 159

## AbilityLifecycleCallback.onAbilityForeground

D
fix  
donglin 已提交
160
onAbilityForeground(ability: UIAbility): void;
D
donglin 已提交
161 162 163 164 165 166 167 168 169

注册监听应用上下文的生命周期后,在ability的状态从后台转到前台时触发回调。

**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore

**参数:**

  | 参数名 | 类型 | 必填 | 说明 | 
  | -------- | -------- | -------- | -------- |
D
donglin 已提交
170
  | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 当前Ability对象 | 
D
donglin 已提交
171

D
donglin 已提交
172 173 174 175
**示例:**
```ts
let abilityLifecycleCallback =  {
    onAbilityForeground(ability){
M
mingxihua 已提交
176
        console.log('AbilityLifecycleCallback onAbilityForeground.');
D
donglin 已提交
177
    }
178
};
D
donglin 已提交
179
```
D
donglin 已提交
180 181 182

## AbilityLifecycleCallback.onAbilityBackground

D
fix  
donglin 已提交
183
onAbilityBackground(ability: UIAbility): void;
D
donglin 已提交
184 185 186 187 188 189 190 191 192

注册监听应用上下文的生命周期后,在ability的状态从前台转到后台时触发回调。

**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore

**参数:**

  | 参数名 | 类型 | 必填 | 说明 | 
  | -------- | -------- | -------- | -------- |
D
donglin 已提交
193
  | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 当前Ability对象 | 
D
donglin 已提交
194

D
donglin 已提交
195 196 197 198
**示例:**
```ts
let abilityLifecycleCallback =  {
    onAbilityBackground(ability){
M
mingxihua 已提交
199
        console.log('AbilityLifecycleCallback onAbilityBackground.');
D
donglin 已提交
200
    }
201
};
D
donglin 已提交
202
```
D
donglin 已提交
203 204 205

## AbilityLifecycleCallback.onAbilityContinue

D
fix  
donglin 已提交
206
onAbilityContinue(ability: UIAbility): void;
D
donglin 已提交
207 208 209 210 211 212 213 214 215

注册监听应用上下文的生命周期后,在ability迁移时触发回调。

**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore

**参数:**

  | 参数名 | 类型 | 必填 | 说明 | 
  | -------- | -------- | -------- | -------- |
D
donglin 已提交
216
  | ability | [UIAbility](js-apis-app-ability-uiAbility.md) | 是 | 当前Ability对象 | 
D
donglin 已提交
217

D
donglin 已提交
218 219 220 221
**示例:**
```ts
let abilityLifecycleCallback =  {
    onAbilityContinue(ability){
M
mingxihua 已提交
222
        console.log('AbilityLifecycleCallback onAbilityContinue.');
D
donglin 已提交
223
    }
224
};
D
donglin 已提交
225
```
226

D
donglin 已提交
227 228
## AbilityLifecycleCallback使用

D
donglin 已提交
229
**示例:**
D
donglin 已提交
230

D
donglin 已提交
231
MyFirstAbility.ts
D
donglin 已提交
232
```ts
M
mingxihua 已提交
233 234
import AbilityLifecycleCallback from '@ohos.app.ability.AbilityLifecycleCallback';
import AbilityStage from '@ohos.app.ability.AbilityStage';
D
donglin 已提交
235
import UIAbility from '@ohos.app.ability.UIAbility';
D
donglin 已提交
236

D
donglin 已提交
237 238
// 声明ability生命周期回调,需配置所有回调后才可以在applicationContext注册
let abilityLifecycleCallback = {
D
donglin 已提交
239
    onAbilityCreate(ability){
M
mingxihua 已提交
240
        console.log('AbilityLifecycleCallback onAbilityCreate.');  
D
donglin 已提交
241 242
    },
    onWindowStageCreate(ability, windowStage){
M
mingxihua 已提交
243
        console.log('AbilityLifecycleCallback onWindowStageCreate.');
D
donglin 已提交
244 245
    },
    onWindowStageActive(ability, windowStage){
M
mingxihua 已提交
246
        console.log('AbilityLifecycleCallback onWindowStageActive.');
D
donglin 已提交
247 248
    },
    onWindowStageInactive(ability, windowStage){
M
mingxihua 已提交
249
        console.log('AbilityLifecycleCallback onWindowStageInactive.');
D
donglin 已提交
250 251
    },
    onWindowStageDestroy(ability, windowStage){
M
mingxihua 已提交
252
        console.log('AbilityLifecycleCallback onWindowStageDestroy.');
D
donglin 已提交
253 254
    },
    onAbilityDestroy(ability){
M
mingxihua 已提交
255
        console.log('AbilityLifecycleCallback onAbilityDestroy.');
D
donglin 已提交
256 257
    },
    onAbilityForeground(ability){
M
mingxihua 已提交
258
        console.log('AbilityLifecycleCallback onAbilityForeground.');
D
donglin 已提交
259 260
    },
    onAbilityBackground(ability){
M
mingxihua 已提交
261
        console.log('AbilityLifecycleCallback onAbilityBackground.');
D
donglin 已提交
262 263
    },
    onAbilityContinue(ability){
M
mingxihua 已提交
264
        console.log('AbilityLifecycleCallback onAbilityContinue.');
D
donglin 已提交
265
    }
266
};
D
donglin 已提交
267

D
donglin 已提交
268
export default class MyFirstAbility extends UIAbility {
D
donglin 已提交
269
    onCreate() {
M
mingxihua 已提交
270
        console.log('MyAbilityStage onCreate');
D
donglin 已提交
271 272 273
        // 1.通过context属性获取applicationContext
        let applicationContext = this.context.getApplicationContext();
        // 2.通过applicationContext注册监听应用内生命周期
274
        try {
M
mingxihua 已提交
275
            globalThis.lifecycleId = applicationContext.on('abilityLifecycle', abilityLifecycleCallback);
M
mingxihua 已提交
276
            console.log('registerAbilityLifecycleCallback lifecycleId: ${globalThis.lifecycleId}');
277
        } catch (paramError) {
M
mingxihua 已提交
278
            console.error('error: ${paramError.code}, ${paramError.message}');
279
        }
D
donglin 已提交
280 281 282 283
    }
}
```

D
donglin 已提交
284
MySecondAbility.ts
D
donglin 已提交
285
```ts
M
mingxihua 已提交
286
import UIAbility from '@ohos.app.ability.UIAbility';
D
donglin 已提交
287

D
donglin 已提交
288
export default class MySecondAbility extends UIAbility {
D
donglin 已提交
289
    onDestroy() {
D
donglin 已提交
290 291
        let applicationContext = this.context.getApplicationContext();
        // 3.通过applicationContext注销监听应用内生命周期
M
mingxihua 已提交
292
        applicationContext.off('abilityLifecycle', globalThis.lifecycleId, (error) => {
D
donglin 已提交
293
            if (error && error.code !== 0) {
M
mingxihua 已提交
294
                console.error('unregisterAbilityLifecycleCallback fail, error: ${JSON.stringify(error)}');
D
donglin 已提交
295
            } else {
M
mingxihua 已提交
296
                console.log('unregisterAbilityLifecycleCallback success.');
D
donglin 已提交
297 298 299
            }
        });
    }
D
donglin 已提交
300 301
}
```