• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# ApplicationContext
2
3ApplicationContext模块提供开发者应用级别的的上下文的能力,包括提供注册及取消注册应用内组件生命周期的监听接口。
4
5> **说明:**
6>
7> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8> 本模块接口仅可在Stage模型下使用。
9
10## 导入模块
11
12```ts
13import common from '@ohos.app.ability.common';
14```
15
16## 使用说明
17
18在使用ApplicationContext的功能前,需要通过context的实例获取。
19
20```ts
21import common from '@ohos.app.ability.common';
22
23let applicationContext: common.ApplicationContext = this.context.getApplicationContext();
24```
25
26## ApplicationContext.on(type: 'abilityLifecycle', callback: AbilityLifecycleCallback)
27
28on(type: 'abilityLifecycle', callback: AbilityLifecycleCallback): **number**;
29
30注册监听应用内生命周期
31
32**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
33
34**参数:**
35
36| 参数名                   | 类型     | 必填 | 说明                           |
37| ------------------------ | -------- | ---- | ------------------------------ |
38| type | 'abilityLifecycle' | 是   | 监听事件的类型。 |
39| callback | [AbilityLifecycleCallback](js-apis-app-ability-abilityLifecycleCallback.md) | 是   | 回调方法,返回注册监听事件的ID。 |
40
41**返回值:**
42
43| 类型   | 说明                           |
44| ------ | ------------------------------ |
45| number | 返回的此次注册监听生命周期的ID(每次注册该ID会自增+1,当超过监听上限数量2^63-1时,返回-1)。|
46
47**示例:**
48
49```ts
50import UIAbility from '@ohos.app.ability.UIAbility';
51import AbilityLifecycleCallback from '@ohos.app.ability.AbilityLifecycleCallback';
52
53let lifecycleId: number;
54
55export default class EntryAbility extends UIAbility {
56    onCreate() {
57        console.log('MyAbility onCreate');
58        let AbilityLifecycleCallback: AbilityLifecycleCallback = {
59            onAbilityCreate(ability) {
60                console.log('AbilityLifecycleCallback onAbilityCreate ability: ${ability}');
61            },
62            onWindowStageCreate(ability, windowStage) {
63                console.log('AbilityLifecycleCallback onWindowStageCreate ability: ${ability}');
64                console.log('AbilityLifecycleCallback onWindowStageCreate windowStage: ${windowStage}');
65            },
66            onWindowStageActive(ability, windowStage) {
67                console.log('AbilityLifecycleCallback onWindowStageActive ability: ${ability}');
68                console.log('AbilityLifecycleCallback onWindowStageActive windowStage: ${windowStage}');
69            },
70            onWindowStageInactive(ability, windowStage) {
71                console.log('AbilityLifecycleCallback onWindowStageInactive ability: ${ability}');
72                console.log('AbilityLifecycleCallback onWindowStageInactive windowStage: ${windowStage}');
73            },
74            onWindowStageDestroy(ability, windowStage) {
75                console.log('AbilityLifecycleCallback onWindowStageDestroy ability: ${ability}');
76                console.log('AbilityLifecycleCallback onWindowStageDestroy windowStage: ${windowStage}');
77            },
78            onAbilityDestroy(ability) {
79                console.log('AbilityLifecycleCallback onAbilityDestroy ability: ${ability}');
80            },
81            onAbilityForeground(ability) {
82                console.log('AbilityLifecycleCallback onAbilityForeground ability: ${ability}');
83            },
84            onAbilityBackground(ability) {
85                console.log('AbilityLifecycleCallback onAbilityBackground ability: ${ability}');
86            },
87            onAbilityContinue(ability) {
88                console.log('AbilityLifecycleCallback onAbilityContinue ability: ${ability}');
89            }
90        }
91        // 1.通过context属性获取applicationContext
92        let applicationContext = this.context.getApplicationContext();
93        // 2.通过applicationContext注册监听应用内生命周期
94        lifecycleId = applicationContext.on('abilityLifecycle', AbilityLifecycleCallback);
95        console.log('registerAbilityLifecycleCallback lifecycleId: ${lifecycleId)}');
96    }
97}
98```
99
100## ApplicationContext.off(type: 'abilityLifecycle', callbackId: number, callback: AsyncCallback\<void>)
101
102off(type: 'abilityLifecycle', callbackId: **number**,  callback: AsyncCallback<**void**>): **void**;
103
104取消监听应用内生命周期
105
106**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
107
108**参数:**
109
110| 参数名        | 类型     | 必填 | 说明                       |
111| ------------- | -------- | ---- | -------------------------- |
112| type | 'abilityLifecycle' | 是   | 取消监听事件的类型。 |
113| callbackId    | number   | 是   | 注册监听应用内生命周期的ID。 |
114| callback | AsyncCallback\<void> | 是   | 回调方法。                   |
115
116**示例:**
117
118```ts
119import UIAbility from '@ohos.app.ability.UIAbility';
120
121let lifecycleId: number;
122
123export default class EntryAbility extends UIAbility {
124    onDestroy() {
125        let applicationContext = this.context.getApplicationContext();
126        console.log('stage applicationContext: ${applicationContext}');
127        applicationContext.off('abilityLifecycle', lifecycleId, (error, data) => {
128            if (error) {
129                console.error('unregisterAbilityLifecycleCallback fail, err: ${JSON.stringify(error)}');
130            } else {
131                console.log('unregisterAbilityLifecycleCallback success, data: ${JSON.stringify(data)}');
132            }
133        });
134    }
135}
136```
137
138## ApplicationContext.off(type: 'abilityLifecycle', callbackId: number)
139
140off(type: 'abilityLifecycle', callbackId: number): Promise\<void>;
141
142取消监听应用内生命周期
143
144**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
145
146**参数:**
147
148| 参数名        | 类型     | 必填 | 说明                       |
149| ------------- | -------- | ---- | -------------------------- |
150| type | 'abilityLifecycle' | 是   | 取消监听事件的类型。 |
151| callbackId    | number   | 是   | 注册监听应用内生命周期的ID。 |
152
153**示例:**
154
155```ts
156import Ability from '@ohos.app.ability.UIAbility';
157
158let lifecycleId: number;
159
160export default class MyAbility extends Ability {
161    onDestroy() {
162        let applicationContext = this.context.getApplicationContext();
163        console.log('stage applicationContext: ${applicationContext}');
164        applicationContext.off('abilityLifecycle', lifecycleId);
165    }
166}
167```
168
169## ApplicationContext.on(type: 'environment', callback: EnvironmentCallback)
170
171on(type: 'environment', callback: EnvironmentCallback): **number**;
172
173注册对系统环境变化的监听。使用callback异步回调。
174
175**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
176
177**参数:**
178
179| 参数名                   | 类型     | 必填 | 说明                           |
180| ------------------------ | -------- | ---- | ------------------------------ |
181| type | 'environment' | 是   | 监听事件的类型。 |
182| callback | [EnvironmentCallback](js-apis-app-ability-environmentCallback.md) | 是   | 回调方法,返回注册监听事件的ID。 |
183
184**返回值:**
185
186| 类型   | 说明                           |
187| ------ | ------------------------------ |
188| number | 返回的此次注册监听系统环境变化的ID(每次注册该ID会自增+1,当超过监听上限数量2^63-1时,返回-1)。|
189
190**示例:**
191
192```ts
193import UIAbility from '@ohos.app.ability.UIAbility';
194import EnvironmentCallback from '@ohos.app.ability.EnvironmentCallback';
195
196let callbackId: number;
197
198export default class EntryAbility extends UIAbility {
199    onCreate() {
200        console.log('MyAbility onCreate')
201        let environmentCallback: EnvironmentCallback = {
202            onConfigurationUpdated(config){
203                console.log(`onConfigurationUpdated config: ${JSON.stringify(config)}`);
204            },
205            onMemoryLevel(level){
206                console.log('onMemoryLevel level: ${level}');
207            }
208        };
209        // 1.获取applicationContext
210        let applicationContext = this.context.getApplicationContext();
211        // 2.通过applicationContext注册监听系统环境变化
212        callbackId = applicationContext.on('environment', environmentCallback);
213        console.log(`registerEnvironmentCallback callbackId: ${callbackId}`);
214    }
215}
216```
217
218## ApplicationContext.off(type: 'environment', callbackId: number, callback: AsyncCallback\<void>)
219
220off(type: 'environment', callbackId: **number**,  callback: AsyncCallback<**void**>): **void**;
221
222取消对系统环境变化的监听。使用callback异步回调。
223
224**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
225
226**参数:**
227
228| 参数名         | 类型     | 必填 | 说明                       |
229| ------------- | -------- | ---- | -------------------------- |
230| type | 'environment' | 是   | 取消监听事件的类型。 |
231| callbackId    | number   | 是   | 注册监听系统环境变化的ID。   |
232| callback | AsyncCallback\<void> | 是   | 回调方法。                  |
233
234**示例:**
235
236```ts
237import UIAbility from '@ohos.app.ability.UIAbility';
238
239let callbackId: number;
240
241export default class EntryAbility extends UIAbility {
242    onDestroy() {
243        let applicationContext = this.context.getApplicationContext();
244        applicationContext.off('environment', callbackId, (error, data) => {
245            if (error) {
246                console.error('unregisterEnvironmentCallback fail, err: ${JSON.stringify(error)}');
247            } else {
248                console.log('unregisterEnvironmentCallback success, data: ${JSON.stringify(data)}');
249            }
250        });
251    }
252}
253```
254
255## ApplicationContext.off(type: 'environment', callbackId: number)
256
257off(type: 'environment', callbackId: **number**,  callback: AsyncCallback<**void**>): **void**;
258
259取消对系统环境变化的监听。使用callback异步回调。
260
261**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
262
263**参数:**
264
265| 参数名         | 类型     | 必填 | 说明                       |
266| ------------- | -------- | ---- | -------------------------- |
267| type | 'environment' | 是   | 取消监听事件的类型。 |
268| callbackId    | number   | 是   | 注册监听系统环境变化的ID。   |
269
270**示例:**
271
272```ts
273import Ability from '@ohos.app.ability.UIAbility';
274
275let callbackId: number;
276
277export default class MyAbility extends Ability {
278    onDestroy() {
279        let applicationContext = this.context.getApplicationContext();
280        applicationContext.off('environment', callbackId);
281    }
282}
283```
284
285## ApplicationContext.on(type: 'applicationStateChange', callback: ApplicationStateChangeCallback)<sup>10+</sup>
286
287on(type: 'applicationStateChange', callback: ApplicationStateChangeCallback): **void**;
288
289注册对当前应用前后台变化的监听。使用callback异步回调。
290
291**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
292
293**参数:**
294
295| 参数名   | 类型                                                         | 必填 | 说明             |
296| -------- | ------------------------------------------------------------ | ---- | ---------------- |
297| type     | string                                     | 是   | 监听事件类型,必须为'applicationStateChange'。 |
298| callback | [ApplicationStateChangeCallback](js-apis-app-ability-applicationStateChangeCallback.md) | 是   | 对于该事件监听的回调方法,可以对应用从后台切换到前台,以及前台切换到后台分别定义回调。       |
299
300**示例:**
301
302```ts
303import UIAbility from '@ohos.app.ability.UIAbility';
304import ApplicationStateChangeCallback from '@ohos.app.ability.ApplicationStateChangeCallback';
305
306export default class MyAbility extends UIAbility {
307    onCreate() {
308        console.log('MyAbility onCreate');
309        let applicationStateChangeCallback: ApplicationStateChangeCallback = {
310            onApplicationForeground() {
311                console.info('applicationStateChangeCallback onApplicationForeground');
312            },
313            onApplicationBackground() {
314                console.info('applicationStateChangeCallback onApplicationBackground');
315            }
316        }
317
318        // 1.获取applicationContext
319        let applicationContext = this.context.getApplicationContext();
320        // 2.通过applicationContext注册应用前后台状态监听
321        applicationContext.on('applicationStateChange', applicationStateChangeCallback);
322        console.log('Resgiter applicationStateChangeCallback');
323    }
324}
325```
326
327## ApplicationContext.off(type: 'applicationStateChange')<sup>10+</sup>
328
329off(type: 'applicationStateChange', callback?: ApplicationStateChangeCallback):  **void**;
330
331取消当前应用注册的前后台变化的全部监听。
332
333**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
334
335**参数:**
336
337| 参数名 | 类型          | 必填 | 说明                 |
338| ------ | ------------- | ---- | -------------------- |
339| type   | string | 是   | 取消监听事件的类型,必须为'applicationStateChange'。 |
340| callback | [ApplicationStateChangeCallback](js-apis-app-ability-applicationStateChangeCallback.md) | 否   | 对于该事件监听的回调方法,可以对应用从后台切换到前台,以及前台切换到后台分别定义回调。       |
341
342**示例:**
343
344```ts
345import UIAbility from '@ohos.app.ability.UIAbility';
346
347export default class MyAbility extends UIAbility {
348    onDestroy() {
349        let applicationContext = this.context.getApplicationContext();
350        applicationContext.off('applicationStateChange');
351    }
352}
353```
354
355## ApplicationContext.getRunningProcessInformation<sup>9+</sup>
356
357getRunningProcessInformation(): Promise\<Array\<ProcessInformation>>;
358
359获取有关运行进程的信息。
360
361**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
362
363**返回值:**
364
365| 类型 | 说明 |
366| -------- | -------- |
367| Promise\<Array\<[ProcessInformation](js-apis-inner-application-processInformation.md)>> | 以Promise方式返回接口运行结果及有关运行进程的信息,可进行错误处理或其他自定义处理。 |
368
369**错误码**:
370
371| 错误码ID | 错误信息 |
372| ------- | -------- |
373| 16000011 | The context does not exist. |
374| 16000050 | Internal error. |
375
376以上错误码详细介绍请参考[errcode-ability](../errorcodes/errorcode-ability.md)。
377
378**示例:**
379
380```ts
381import UIAbility from '@ohos.app.ability.UIAbility';
382import { BusinessError } from '@ohos.base';
383
384export default class MyAbility extends UIAbility {
385    onForeground() {
386        let applicationContext = this.context.getApplicationContext();
387        applicationContext.getRunningProcessInformation().then((data) => {
388            console.log(`The process running information is: ${JSON.stringify(data)}`);
389        }).catch((error: BusinessError) => {
390            console.error(`error: ${JSON.stringify(error)}`);
391        });
392    }
393}
394```
395
396## ApplicationContext.getRunningProcessInformation<sup>9+</sup>
397
398getRunningProcessInformation(callback: AsyncCallback\<Array\<ProcessInformation>>): void;
399
400获取有关运行进程的信息。
401
402**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
403
404**返回值:**
405
406| 类型 | 说明 |
407| -------- | -------- |
408|AsyncCallback\<Array\<[ProcessInformation](js-apis-inner-application-processInformation.md)>> | 以回调方式返回接口运行结果及有关运行进程的信息,可进行错误处理或其他自定义处理。 |
409
410**错误码**:
411
412| 错误码ID | 错误信息 |
413| ------- | -------- |
414| 16000011 | The context does not exist. |
415| 16000050 | Internal error. |
416
417以上错误码详细介绍请参考[errcode-ability](../errorcodes/errorcode-ability.md)。
418
419**示例:**
420
421```ts
422import UIAbility from '@ohos.app.ability.UIAbility';
423
424export default class MyAbility extends UIAbility {
425    onForeground() {
426        let applicationContext = this.context.getApplicationContext();
427        applicationContext.getRunningProcessInformation((err, data) => {
428            if (err) {
429                console.error(`getRunningProcessInformation faile, err: ${JSON.stringify(err)}`);
430            } else {
431                console.log(`The process running information is: ${JSON.stringify(data)}`);
432            }
433        })
434    }
435}
436```
437
438## ApplicationContext.killAllProcesses<sup>9+</sup>
439
440killAllProcesses(): Promise\<void\>;
441
442杀死应用所在的进程。
443
444**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
445
446**返回值:**
447
448| 类型 | 说明 |
449| -------- | -------- |
450| Promise\<void\> | 以Promise方式返回杀死应用所在的进程结果。 |
451
452**错误码**:
453
454| 错误码ID | 错误信息 |
455| ------- | -------- |
456| 16000011 | The context does not exist. |
457
458以上错误码详细介绍请参考[errcode-ability](../errorcodes/errorcode-ability.md)。
459
460**示例:**
461
462```ts
463import UIAbility from '@ohos.app.ability.UIAbility';
464
465export default class MyAbility extends UIAbility {
466    onBackground() {
467        let applicationContext = this.context.getApplicationContext();
468        applicationContext.killAllProcesses();
469    }
470}
471```
472
473## ApplicationContext.killAllProcesses<sup>9+</sup>
474
475killAllProcesses(callback: AsyncCallback\<void\>);
476
477杀死应用所在的进程。
478
479**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
480
481**返回值:**
482
483| 类型 | 说明 |
484| -------- | -------- |
485|AsyncCallback\<void\> | 以callback方式返回杀死应用所在的进程结果。 |
486
487**错误码**:
488
489| 错误码ID | 错误信息 |
490| ------- | -------- |
491| 16000011 | The context does not exist. |
492
493以上错误码详细介绍请参考[errcode-ability](../errorcodes/errorcode-ability.md)。
494
495**示例:**
496
497```ts
498import UIAbility from '@ohos.app.ability.UIAbility';
499
500export default class MyAbility extends UIAbility {
501    onBackground() {
502        let applicationContext = this.context.getApplicationContext();
503        applicationContext.killAllProcesses(error => {
504            if (error) {
505                console.error(`killAllProcesses fail, error: ${JSON.stringify(error)}`);
506            }
507        });
508    }
509}
510```