• 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
21let applicationContext: common.ApplicationContext = this.context.getApplicationContext();
22```
23
24## ApplicationContext.on(type: 'abilityLifecycle', callback: AbilityLifecycleCallback)
25
26on(type: 'abilityLifecycle', callback: AbilityLifecycleCallback): **number**;
27
28注册监听应用内生命周期
29
30**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
31
32**参数:**
33
34| 参数名                   | 类型     | 必填 | 说明                           |
35| ------------------------ | -------- | ---- | ------------------------------ |
36| type | 'abilityLifecycle' | 是   | 监听事件的类型。 |
37| callback | [AbilityLifecycleCallback](js-apis-app-ability-abilityLifecycleCallback.md) | 是   | 回调方法,返回注册监听事件的ID。 |
38
39**返回值:**
40
41| 类型   | 说明                           |
42| ------ | ------------------------------ |
43| number | 返回的此次注册监听生命周期的ID(每次注册该ID会自增+1,当超过监听上限数量2^63-1时,返回-1)。|
44
45**示例:**
46
47```ts
48import UIAbility from '@ohos.app.ability.UIAbility';
49
50let lifecycleId;
51
52export default class EntryAbility extends UIAbility {
53    onCreate() {
54        console.log('MyAbility onCreate');
55        let AbilityLifecycleCallback = {
56            onAbilityCreate(ability) {
57                console.log('AbilityLifecycleCallback onAbilityCreate ability:' + ability);
58            },
59            onWindowStageCreate(ability, windowStage) {
60                console.log('AbilityLifecycleCallback onWindowStageCreate ability:' + ability);
61                console.log('AbilityLifecycleCallback onWindowStageCreate windowStage:' + windowStage);
62            },
63            onWindowStageActive(ability, windowStage) {
64                console.log('AbilityLifecycleCallback onWindowStageActive ability:' + ability);
65                console.log('AbilityLifecycleCallback onWindowStageActive windowStage:' + windowStage);
66            },
67            onWindowStageInactive(ability, windowStage) {
68                console.log('AbilityLifecycleCallback onWindowStageInactive ability:' + ability);
69                console.log('AbilityLifecycleCallback onWindowStageInactive windowStage:' + windowStage);
70            },
71            onWindowStageDestroy(ability, windowStage) {
72                console.log('AbilityLifecycleCallback onWindowStageDestroy ability:' + ability);
73                console.log('AbilityLifecycleCallback onWindowStageDestroy windowStage:' + windowStage);
74            },
75            onAbilityDestroy(ability) {
76                console.log('AbilityLifecycleCallback onAbilityDestroy ability:' + ability);
77            },
78            onAbilityForeground(ability) {
79                console.log('AbilityLifecycleCallback onAbilityForeground ability:' + ability);
80            },
81            onAbilityBackground(ability) {
82                console.log('AbilityLifecycleCallback onAbilityBackground ability:' + ability);
83            },
84            onAbilityContinue(ability) {
85                console.log('AbilityLifecycleCallback onAbilityContinue ability:' + ability);
86            }
87        }
88        // 1.通过context属性获取applicationContext
89        let applicationContext = this.context.getApplicationContext();
90        // 2.通过applicationContext注册监听应用内生命周期
91        lifecycleId = applicationContext.on('abilityLifecycle', AbilityLifecycleCallback);
92        console.log('registerAbilityLifecycleCallback number: ' + JSON.stringify(lifecycleId));
93    }
94}
95```
96
97## ApplicationContext.off(type: 'abilityLifecycle', callbackId: number, callback: AsyncCallback\<void>)
98
99off(type: 'abilityLifecycle', callbackId: **number**,  callback: AsyncCallback<**void**>): **void**;
100
101取消监听应用内生命周期
102
103**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
104
105**参数:**
106
107| 参数名        | 类型     | 必填 | 说明                       |
108| ------------- | -------- | ---- | -------------------------- |
109| type | 'abilityLifecycle' | 是   | 取消监听事件的类型。 |
110| callbackId    | number   | 是   | 注册监听应用内生命周期的ID。 |
111| callback | AsyncCallback\<void> | 是   | 回调方法。                   |
112
113**示例:**
114
115```ts
116import UIAbility from '@ohos.app.ability.UIAbility';
117
118let lifecycleId;
119
120export default class EntryAbility extends UIAbility {
121    onDestroy() {
122        let applicationContext = this.context.getApplicationContext();
123        console.log('stage applicationContext: ' + applicationContext);
124        applicationContext.off('abilityLifecycle', lifecycleId, (error, data) => {
125            console.log('unregisterAbilityLifecycleCallback success, err: ' + JSON.stringify(error));
126        });
127    }
128}
129```
130
131## ApplicationContext.off(type: 'abilityLifecycle', callbackId: number)
132
133off(type: 'abilityLifecycle', callbackId: **number**): **void**;
134
135取消监听应用内生命周期
136
137**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
138
139**参数:**
140
141| 参数名        | 类型     | 必填 | 说明                       |
142| ------------- | -------- | ---- | -------------------------- |
143| type | 'abilityLifecycle' | 是   | 取消监听事件的类型。 |
144| callbackId    | number   | 是   | 注册监听应用内生命周期的ID。 |
145
146**示例:**
147
148```ts
149import Ability from '@ohos.app.ability.UIAbility';
150
151let lifecycleId;
152
153export default class MyAbility extends Ability {
154    onDestroy() {
155        let applicationContext = this.context.getApplicationContext();
156        console.log('stage applicationContext: ' + applicationContext);
157        applicationContext.off('abilityLifecycle', lifecycleId);
158    }
159}
160```
161
162## ApplicationContext.on(type: 'environment', callback: EnvironmentCallback)
163
164on(type: 'environment', callback: EnvironmentCallback): **number**;
165
166注册对系统环境变化的监听。使用callback异步回调。
167
168**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
169
170**参数:**
171
172| 参数名                   | 类型     | 必填 | 说明                           |
173| ------------------------ | -------- | ---- | ------------------------------ |
174| type | 'environment' | 是   | 监听事件的类型。 |
175| callback | [EnvironmentCallback](js-apis-app-ability-environmentCallback.md) | 是   | 回调方法,返回注册监听事件的ID。 |
176
177**返回值:**
178
179| 类型   | 说明                           |
180| ------ | ------------------------------ |
181| number | 返回的此次注册监听系统环境变化的ID(每次注册该ID会自增+1,当超过监听上限数量2^63-1时,返回-1)。|
182
183**示例:**
184
185```ts
186import UIAbility from '@ohos.app.ability.UIAbility';
187
188let callbackId;
189
190export default class EntryAbility extends UIAbility {
191    onCreate() {
192        console.log('MyAbility onCreate')
193        globalThis.applicationContext = this.context.getApplicationContext();
194        let environmentCallback = {
195            onConfigurationUpdated(config){
196                console.log('onConfigurationUpdated config:' + JSON.stringify(config));
197            },
198            onMemoryLevel(level){
199                console.log('onMemoryLevel level:' + level);
200            }
201        }
202        // 1.获取applicationContext
203        let applicationContext = globalThis.applicationContext;
204        // 2.通过applicationContext注册监听应用内生命周期
205        callbackId = applicationContext.on('environment', environmentCallback);
206        console.log('registerEnvironmentCallback callbackId: ${callbackId}');
207    }
208}
209```
210
211## ApplicationContext.off(type: 'environment', callbackId: number, callback: AsyncCallback\<void>)
212
213off(type: 'environment', callbackId: **number**,  callback: AsyncCallback<**void**>): **void**;
214
215取消对系统环境变化的监听。使用callback异步回调。
216
217**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
218
219**参数:**
220
221| 参数名         | 类型     | 必填 | 说明                       |
222| ------------- | -------- | ---- | -------------------------- |
223| type | 'environment' | 是   | 取消监听事件的类型。 |
224| callbackId    | number   | 是   | 注册监听系统环境变化的ID。   |
225| callback | AsyncCallback\<void> | 是   | 回调方法。                  |
226
227**示例:**
228
229```ts
230import UIAbility from '@ohos.app.ability.UIAbility';
231
232let callbackId;
233
234export default class EntryAbility extends UIAbility {
235    onDestroy() {
236        let applicationContext = this.context.getApplicationContext();
237        applicationContext.off('environment', callbackId, (error, data) => {
238            console.log('unregisterEnvironmentCallback success, err: ' + JSON.stringify(error));
239        });
240    }
241}
242```
243
244## ApplicationContext.off(type: 'environment', callbackId: number)
245
246off(type: 'environment', callbackId: **number**,  callback: AsyncCallback<**void**>): **void**;
247
248取消对系统环境变化的监听。使用callback异步回调。
249
250**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
251
252**参数:**
253
254| 参数名         | 类型     | 必填 | 说明                       |
255| ------------- | -------- | ---- | -------------------------- |
256| type | 'environment' | 是   | 取消监听事件的类型。 |
257| callbackId    | number   | 是   | 注册监听系统环境变化的ID。   |
258
259**示例:**
260
261```ts
262import Ability from '@ohos.app.ability.UIAbility';
263
264let callbackId;
265
266export default class MyAbility extends Ability {
267    onDestroy() {
268        let applicationContext = this.context.getApplicationContext();
269        applicationContext.off('environment', callbackId);
270    }
271}
272```
273
274## ApplicationContext.getRunningProcessInformation<sup>9+</sup>
275
276getRunningProcessInformation(): Promise\<Array\<ProcessInformation>>;
277
278获取有关运行进程的信息。
279
280**需要权限**:ohos.permission.GET_RUNNING_INFO
281
282**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
283
284**系统API**: 此接口为系统接口,三方应用不支持调用。
285
286**返回值:**
287
288| 类型 | 说明 |
289| -------- | -------- |
290| Promise\<Array\<[ProcessInformation](js-apis-inner-application-processInformation.md)>> | 以Promise方式返回接口运行结果及有关运行进程的信息,可进行错误处理或其他自定义处理。 |
291
292**错误码**:
293
294| 错误码ID | 错误信息 |
295| ------- | -------- |
296| 16000011 | The context does not exist. |
297| 16000050 | Internal error. |
298
299以上错误码详细介绍请参考[errcode-ability](../errorcodes/errorcode-ability.md)。
300
301**示例:**
302
303```ts
304applicationContext.getRunningProcessInformation().then((data) => {
305    console.log('The process running information is:' + JSON.stringify(data));
306}).catch((error) => {
307    console.log('error:' + JSON.stringify(error));
308});
309```
310
311## ApplicationContext.getRunningProcessInformation<sup>9+</sup>
312
313getRunningProcessInformation(callback: AsyncCallback\<Array\<ProcessInformation>>): void;
314
315获取有关运行进程的信息。
316
317**需要权限**:ohos.permission.GET_RUNNING_INFO
318
319**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
320
321**系统API**: 此接口为系统接口,三方应用不支持调用。
322
323**返回值:**
324
325| 类型 | 说明 |
326| -------- | -------- |
327|AsyncCallback\<Array\<[ProcessInformation](js-apis-inner-application-processInformation.md)>> | 以回调方式返回接口运行结果及有关运行进程的信息,可进行错误处理或其他自定义处理。 |
328
329**错误码**:
330
331| 错误码ID | 错误信息 |
332| ------- | -------- |
333| 16000011 | The context does not exist. |
334| 16000050 | Internal error. |
335
336以上错误码详细介绍请参考[errcode-ability](../errorcodes/errorcode-ability.md)。
337
338**示例:**
339
340```ts
341applicationContext.getRunningProcessInformation((err, data) => {
342    if (err.code !== 0) {
343        console.error('getRunningProcessInformation faile, err: ' + JSON.stringify(err));
344    } else {
345        console.log('The process running information is:' + JSON.stringify(data));
346    }
347})
348```
349
350## ApplicationContext.killProcessesBySelf<sup>9+</sup>
351
352killProcessesBySelf(): Promise\<void>;
353
354杀死应用所在的进程。
355
356**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
357
358**返回值:**
359
360| 类型 | 说明 |
361| -------- | -------- |
362| Promise\<void>> | 以Promise方式返回杀死应用所在的进程结果。 |
363
364**错误码**:
365
366| 错误码ID | 错误信息 |
367| ------- | -------- |
368| 16000011 | The context does not exist. |
369
370以上错误码详细介绍请参考[errcode-ability](../errorcodes/errorcode-ability.md)。
371
372**示例:**
373
374```ts
375let applicationContext = this.context.getApplicationContext();
376applicationContext.killProcessesBySelf().then((data) => {
377    console.log('The process running information is:' + JSON.stringify(data));
378}).catch((error) => {
379    console.error('error:' + JSON.stringify(error));
380});
381```
382
383## ApplicationContext.killProcessesBySelf<sup>9+</sup>
384
385killProcessesBySelf(callback: AsyncCallback\<void>);
386
387杀死应用所在的进程。
388
389**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
390
391**返回值:**
392
393| 类型 | 说明 |
394| -------- | -------- |
395|AsyncCallback\<void> | 以callback方式返回杀死应用所在的进程结果。 |
396
397**错误码**:
398
399| 错误码ID | 错误信息 |
400| ------- | -------- |
401| 16000011 | The context does not exist. |
402
403以上错误码详细介绍请参考[errcode-ability](../errorcodes/errorcode-ability.md)。
404
405**示例:**
406
407```ts
408applicationContext.killAllProcesses(error => {
409    if (error) {
410        console.error('killAllProcesses fail, error: ${JSON.stringify(error)}');
411    }
412})
413```