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