js-apis-inner-application-applicationContext.md 13.0 KB
Newer Older
M
m00512953 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
# ApplicationContext

ApplicationContext模块提供开发者应用级别的的上下文的能力,包括提供注册及取消注册应用内组件生命周期的监听接口。

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

## 使用说明

在使用ApplicationContext的功能前,需要通过context的实例获取。

```ts
let applicationContext = this.context.getApplicationContext();
```

M
mingxihua 已提交
18
## ApplicationContext.on(type: 'abilityLifecycle', callback: AbilityLifecycleCallback)
M
m00512953 已提交
19

M
mingxihua 已提交
20
on(type: 'abilityLifecycle', callback: AbilityLifecycleCallback): **number**;
M
m00512953 已提交
21 22 23 24 25 26 27 28 29

注册监听应用内生命周期

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

**参数:**

| 参数名                   | 类型     | 必填 | 说明                           |
| ------------------------ | -------- | ---- | ------------------------------ |
M
mingxihua 已提交
30
| type | 'abilityLifecycle' | 是   | 监听事件的类型。 |
M
m00512953 已提交
31 32 33 34 35 36 37 38 39 40 41
| callback | [AbilityLifecycleCallback](js-apis-app-ability-abilityLifecycleCallback.md) | 是   | 回调方法,返回注册监听事件的ID。 |

**返回值:**

| 类型   | 说明                           |
| ------ | ------------------------------ |
| number | 返回的此次注册监听生命周期的ID(每次注册该ID会自增+1,当超过监听上限数量2^63-1时,返回-1)。|

**示例:**

```ts
M
mingxihua 已提交
42
import UIAbility from '@ohos.app.ability.UIAbility';
M
m00512953 已提交
43

M
mingxihua 已提交
44
let lifecycleId;
M
m00512953 已提交
45

M
mingxihua 已提交
46
export default class EntryAbility extends UIAbility {
M
m00512953 已提交
47
    onCreate() {
M
mingxihua 已提交
48
        console.log('MyAbility onCreate');
M
m00512953 已提交
49 50
        let AbilityLifecycleCallback = {
            onAbilityCreate(ability) {
M
mingxihua 已提交
51
                console.log('AbilityLifecycleCallback onAbilityCreate ability:' + ability);
M
m00512953 已提交
52 53
            },
            onWindowStageCreate(ability, windowStage) {
M
mingxihua 已提交
54 55
                console.log('AbilityLifecycleCallback onWindowStageCreate ability:' + ability);
                console.log('AbilityLifecycleCallback onWindowStageCreate windowStage:' + windowStage);
M
m00512953 已提交
56 57
            },
            onWindowStageActive(ability, windowStage) {
M
mingxihua 已提交
58 59
                console.log('AbilityLifecycleCallback onWindowStageActive ability:' + ability);
                console.log('AbilityLifecycleCallback onWindowStageActive windowStage:' + windowStage);
M
m00512953 已提交
60 61
            },
            onWindowStageInactive(ability, windowStage) {
M
mingxihua 已提交
62 63
                console.log('AbilityLifecycleCallback onWindowStageInactive ability:' + ability);
                console.log('AbilityLifecycleCallback onWindowStageInactive windowStage:' + windowStage);
M
m00512953 已提交
64 65
            },
            onWindowStageDestroy(ability, windowStage) {
M
mingxihua 已提交
66 67
                console.log('AbilityLifecycleCallback onWindowStageDestroy ability:' + ability);
                console.log('AbilityLifecycleCallback onWindowStageDestroy windowStage:' + windowStage);
M
m00512953 已提交
68 69
            },
            onAbilityDestroy(ability) {
M
mingxihua 已提交
70
                console.log('AbilityLifecycleCallback onAbilityDestroy ability:' + ability);
M
m00512953 已提交
71 72
            },
            onAbilityForeground(ability) {
M
mingxihua 已提交
73
                console.log('AbilityLifecycleCallback onAbilityForeground ability:' + ability);
M
m00512953 已提交
74 75
            },
            onAbilityBackground(ability) {
M
mingxihua 已提交
76
                console.log('AbilityLifecycleCallback onAbilityBackground ability:' + ability);
M
m00512953 已提交
77 78
            },
            onAbilityContinue(ability) {
M
mingxihua 已提交
79
                console.log('AbilityLifecycleCallback onAbilityContinue ability:' + ability);
M
m00512953 已提交
80 81 82 83 84
            }
        }
        // 1.通过context属性获取applicationContext
        let applicationContext = this.context.getApplicationContext();
        // 2.通过applicationContext注册监听应用内生命周期
M
mingxihua 已提交
85 86
        lifecycleId = applicationContext.on('abilityLifecycle', AbilityLifecycleCallback);
        console.log('registerAbilityLifecycleCallback number: ' + JSON.stringify(lifecycleId));
M
m00512953 已提交
87 88 89 90
    }
}
```

Z
zengyawen 已提交
91
## ApplicationContext.off(type: 'abilityLifecycle', callbackId: number, callback: AsyncCallback\<void>)
M
m00512953 已提交
92

M
mingxihua 已提交
93
off(type: 'abilityLifecycle', callbackId: **number**,  callback: AsyncCallback<**void**>): **void**;
M
m00512953 已提交
94 95 96 97 98 99 100 101 102

取消监听应用内生命周期

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

**参数:**

| 参数名        | 类型     | 必填 | 说明                       |
| ------------- | -------- | ---- | -------------------------- |
M
mingxihua 已提交
103
| type | 'abilityLifecycle' | 是   | 取消监听事件的类型。 |
M
m00512953 已提交
104 105 106 107 108 109
| callbackId    | number   | 是   | 注册监听应用内生命周期的ID。 |
| callback | AsyncCallback\<void> | 是   | 回调方法。                   |

**示例:**

```ts
M
mingxihua 已提交
110
import UIAbility from '@ohos.app.ability.UIAbility';
M
m00512953 已提交
111

M
mingxihua 已提交
112
let lifecycleId;
M
m00512953 已提交
113

M
mingxihua 已提交
114
export default class EntryAbility extends UIAbility {
M
m00512953 已提交
115 116
    onDestroy() {
        let applicationContext = this.context.getApplicationContext();
M
mingxihua 已提交
117
        console.log('stage applicationContext: ' + applicationContext);
M
mingxihua 已提交
118
        applicationContext.off('abilityLifecycle', lifecycleId, (error, data) => {
M
mingxihua 已提交
119
            console.log('unregisterAbilityLifecycleCallback success, err: ' + JSON.stringify(error));
M
m00512953 已提交
120 121 122 123 124
        });
    }
}
```

M
mingxihua 已提交
125
## ApplicationContext.off(type: 'abilityLifecycle', callbackId: number)
M
mingxihua 已提交
126

M
mingxihua 已提交
127
off(type: 'abilityLifecycle', callbackId: **number**): **void**;
M
mingxihua 已提交
128 129 130 131 132 133 134 135 136

取消监听应用内生命周期

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

**参数:**

| 参数名        | 类型     | 必填 | 说明                       |
| ------------- | -------- | ---- | -------------------------- |
M
mingxihua 已提交
137
| type | 'abilityLifecycle' | 是   | 取消监听事件的类型。 |
M
mingxihua 已提交
138 139 140 141 142
| callbackId    | number   | 是   | 注册监听应用内生命周期的ID。 |

**示例:**

```ts
M
mingxihua 已提交
143
import Ability from '@ohos.app.ability.UIAbility';
M
mingxihua 已提交
144

M
mingxihua 已提交
145
let lifecycleId;
M
mingxihua 已提交
146 147 148 149

export default class MyAbility extends Ability {
    onDestroy() {
        let applicationContext = this.context.getApplicationContext();
M
mingxihua 已提交
150
        console.log('stage applicationContext: ' + applicationContext);
M
mingxihua 已提交
151
        applicationContext.off('abilityLifecycle', lifecycleId);
M
mingxihua 已提交
152 153 154 155
    }
}
```

M
mingxihua 已提交
156
## ApplicationContext.on(type: 'environment', callback: EnvironmentCallback)
M
m00512953 已提交
157

M
mingxihua 已提交
158
on(type: 'environment', callback: EnvironmentCallback): **number**;
M
m00512953 已提交
159 160 161 162 163 164 165 166 167

注册对系统环境变化的监听。使用callback异步回调。

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

**参数:**

| 参数名                   | 类型     | 必填 | 说明                           |
| ------------------------ | -------- | ---- | ------------------------------ |
M
mingxihua 已提交
168
| type | 'environment' | 是   | 监听事件的类型。 |
M
m00512953 已提交
169 170 171 172 173 174 175 176 177 178 179
| callback | [EnvironmentCallback](js-apis-app-ability-environmentCallback.md) | 是   | 回调方法,返回注册监听事件的ID。 |

**返回值:**

| 类型   | 说明                           |
| ------ | ------------------------------ |
| number | 返回的此次注册监听系统环境变化的ID(每次注册该ID会自增+1,当超过监听上限数量2^63-1时,返回-1)。|

**示例:**

```ts
M
mingxihua 已提交
180
import UIAbility from '@ohos.app.ability.UIAbility';
M
m00512953 已提交
181

M
mingxihua 已提交
182
let callbackId;
M
m00512953 已提交
183

M
mingxihua 已提交
184
export default class EntryAbility extends UIAbility {
M
m00512953 已提交
185
    onCreate() {
M
mingxihua 已提交
186
        console.log('MyAbility onCreate')
M
m00512953 已提交
187
        globalThis.applicationContext = this.context.getApplicationContext();
M
mingxihua 已提交
188
        let environmentCallback = {
M
m00512953 已提交
189
            onConfigurationUpdated(config){
M
mingxihua 已提交
190
                console.log('onConfigurationUpdated config:' + JSON.stringify(config));
M
m00512953 已提交
191
            },
M
mingxihua 已提交
192
            onMemoryLevel(level){
M
mingxihua 已提交
193
                console.log('onMemoryLevel level:' + level);
M
mingxihua 已提交
194
            }
M
m00512953 已提交
195 196 197 198
        }
        // 1.获取applicationContext
        let applicationContext = globalThis.applicationContext;
        // 2.通过applicationContext注册监听应用内生命周期
M
mingxihua 已提交
199 200
        callbackId = applicationContext.on('environment', environmentCallback);
        console.log('registerEnvironmentCallback callbackId: ${callbackId}');
M
m00512953 已提交
201 202 203 204
    }
}
```

Z
zengyawen 已提交
205
## ApplicationContext.off(type: 'environment', callbackId: number, callback: AsyncCallback\<void>)
M
m00512953 已提交
206

M
mingxihua 已提交
207
off(type: 'environment', callbackId: **number**,  callback: AsyncCallback<**void**>): **void**;
M
m00512953 已提交
208 209 210 211 212 213 214 215 216

取消对系统环境变化的监听。使用callback异步回调。

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

**参数:**

| 参数名         | 类型     | 必填 | 说明                       |
| ------------- | -------- | ---- | -------------------------- |
M
mingxihua 已提交
217
| type | 'environment' | 是   | 取消监听事件的类型。 |
M
m00512953 已提交
218 219 220 221 222 223
| callbackId    | number   | 是   | 注册监听系统环境变化的ID。   |
| callback | AsyncCallback\<void> | 是   | 回调方法。                  |

**示例:**

```ts
M
mingxihua 已提交
224
import UIAbility from '@ohos.app.ability.UIAbility';
M
m00512953 已提交
225

M
mingxihua 已提交
226
let callbackId;
M
m00512953 已提交
227

M
mingxihua 已提交
228
export default class EntryAbility extends UIAbility {
M
m00512953 已提交
229 230
    onDestroy() {
        let applicationContext = this.context.getApplicationContext();
M
mingxihua 已提交
231 232
        applicationContext.off('environment', callbackId, (error, data) => {
            console.log('unregisterEnvironmentCallback success, err: ' + JSON.stringify(error));
M
m00512953 已提交
233 234 235
        });
    }
}
M
mingxihua 已提交
236 237
```

M
mingxihua 已提交
238
## ApplicationContext.off(type: 'environment', callbackId: number)
M
mingxihua 已提交
239

M
mingxihua 已提交
240
off(type: 'environment', callbackId: **number**,  callback: AsyncCallback<**void**>): **void**;
M
mingxihua 已提交
241 242 243 244 245 246 247 248 249

取消对系统环境变化的监听。使用callback异步回调。

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

**参数:**

| 参数名         | 类型     | 必填 | 说明                       |
| ------------- | -------- | ---- | -------------------------- |
M
mingxihua 已提交
250
| type | 'environment' | 是   | 取消监听事件的类型。 |
M
mingxihua 已提交
251 252 253 254 255
| callbackId    | number   | 是   | 注册监听系统环境变化的ID。   |

**示例:**

```ts
M
mingxihua 已提交
256
import Ability from '@ohos.app.ability.UIAbility';
M
mingxihua 已提交
257

M
mingxihua 已提交
258
let callbackId;
M
mingxihua 已提交
259 260 261 262

export default class MyAbility extends Ability {
    onDestroy() {
        let applicationContext = this.context.getApplicationContext();
M
mingxihua 已提交
263
        applicationContext.off('environment', callbackId);
M
mingxihua 已提交
264 265 266 267
    }
}
```

M
mingxihua 已提交
268
## ApplicationContext.getRunningProcessInformation<sup>9+</sup>
M
mingxihua 已提交
269

M
mingxihua 已提交
270
getRunningProcessInformation(): Promise\<Array\<ProcessInformation>>;
M
mingxihua 已提交
271 272 273 274 275 276 277 278 279 280 281 282 283

获取有关运行进程的信息。

**需要权限**:ohos.permission.GET_RUNNING_INFO

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

**系统API**: 此接口为系统接口,三方应用不支持调用。

**返回值:**

| 类型 | 说明 |
| -------- | -------- |
M
mingxihua 已提交
284
| Promise\<Array\<[ProcessInformation](js-apis-inner-application-processInformation.md)>> | 以Promise方式返回接口运行结果及有关运行进程的信息,可进行错误处理或其他自定义处理。 |
M
mingxihua 已提交
285 286 287 288 289

**示例:**

```ts
let applicationContext = this.context.getApplicationContext();
M
mingxihua 已提交
290
applicationContext.getRunningProcessInformation().then((data) => {
M
mingxihua 已提交
291
    console.log('The process running information is:' + JSON.stringify(data));
M
mingxihua 已提交
292
}).catch((error) => {
M
mingxihua 已提交
293
    console.log('error:' + JSON.stringify(error));
M
mingxihua 已提交
294 295 296
});
```

M
mingxihua 已提交
297
## ApplicationContext.getRunningProcessInformation<sup>9+</sup>
M
mingxihua 已提交
298

M
mingxihua 已提交
299
getRunningProcessInformation(callback: AsyncCallback\<Array\<ProcessInformation>>): void;
M
mingxihua 已提交
300 301 302 303 304 305 306 307 308 309 310 311 312

获取有关运行进程的信息。

**需要权限**:ohos.permission.GET_RUNNING_INFO

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

**系统API**: 此接口为系统接口,三方应用不支持调用。

**返回值:**

| 类型 | 说明 |
| -------- | -------- |
M
mingxihua 已提交
313
|AsyncCallback\<Array\<[ProcessInformation](js-apis-inner-application-processInformation.md)>> | 以回调方式返回接口运行结果及有关运行进程的信息,可进行错误处理或其他自定义处理。 |
M
mingxihua 已提交
314 315 316 317 318

**示例:**

```ts
let applicationContext = this.context.getApplicationContext();
M
mingxihua 已提交
319
applicationContext.getRunningProcessInformation((err, data) => {
M
mingxihua 已提交
320
    if (err.code !== 0) {
M
mingxihua 已提交
321
        console.error('getRunningProcessInformation faile, err: ' + JSON.stringify(err));
M
mingxihua 已提交
322
    } else {
M
mingxihua 已提交
323
        console.log('The process running information is:' + JSON.stringify(data));
M
mingxihua 已提交
324 325 326 327 328 329
    }
})
```

## ApplicationContext.killProcessesBySelf<sup>9+</sup>

Z
zengyawen 已提交
330
killProcessesBySelf(): Promise\<void>;
M
mingxihua 已提交
331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346

杀死应用所在的进程。

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

**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| Promise\<void>> | 以Promise方式返回杀死应用所在的进程结果。 |

**示例:**

```ts
let applicationContext = this.context.getApplicationContext();
applicationContext.killProcessesBySelf().then((data) => {
M
mingxihua 已提交
347
    console.log('The process running information is:' + JSON.stringify(data));
M
mingxihua 已提交
348
}).catch((error) => {
M
mingxihua 已提交
349
    console.error('error:' + JSON.stringify(error));
M
mingxihua 已提交
350 351 352 353 354
});
```

## ApplicationContext.killProcessesBySelf<sup>9+</sup>

Z
zengyawen 已提交
355
killProcessesBySelf(callback: AsyncCallback\<void>);
M
mingxihua 已提交
356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372

杀死应用所在的进程。

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

**返回值:**

| 类型 | 说明 |
| -------- | -------- |
|AsyncCallback\<void> | 以callback方式返回杀死应用所在的进程结果。 |

**示例:**

```ts
let applicationContext = this.context.getApplicationContext();
applicationContext.killProcessesBySelf(err => {
    if (err.code !== 0) {
M
mingxihua 已提交
373
        console.error('killProcessesBySelf faile, err: ' + JSON.stringify(err));
M
mingxihua 已提交
374 375
    }
})
M
m00512953 已提交
376
```