1# ApplicationContext
2
3ApplicationContext模块继承自[Context](js-apis-inner-application-context.md),提供开发者应用级别的的上下文的能力,包括提供注册及取消注册应用内组件生命周期的监听接口。
4
5> **说明:**
6>
7> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8> 本模块接口仅可在Stage模型下使用。
9
10## 导入模块
11
12```ts
13import { common } from '@kit.AbilityKit';
14```
15
16## 使用说明
17
18在使用ApplicationContext的功能前,需要通过context的实例获取。
19
20## ApplicationContext.on('abilityLifecycle')
21
22on(type: 'abilityLifecycle', callback: AbilityLifecycleCallback): number
23
24注册监听应用内生命周期。使用callback异步回调。仅支持主线程调用。
25
26**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。
27
28**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
29
30**参数:**
31
32| 参数名                   | 类型     | 必填 | 说明                           |
33| ------------------------ | -------- | ---- | ------------------------------ |
34| type | 'abilityLifecycle' | 是   | 监听事件的类型。 |
35| callback | [AbilityLifecycleCallback](js-apis-app-ability-abilityLifecycleCallback.md) | 是   | 回调方法,返回注册监听事件的ID。 |
36
37**返回值:**
38
39| 类型   | 说明                           |
40| ------ | ------------------------------ |
41| number | 返回的此次注册监听生命周期的ID(每次注册该ID会自增+1,当超过监听上限数量2^63-1时,返回-1)。|
42
43**错误码**:
44
45以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
46
47| 错误码ID | 错误信息 |
48| ------- | -------- |
49| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
50
51**示例:**
52
53```ts
54import { UIAbility, AbilityLifecycleCallback } from '@kit.AbilityKit';
55import { BusinessError } from '@kit.BasicServicesKit';
56
57let lifecycleId: number;
58
59export default class EntryAbility extends UIAbility {
60  onCreate() {
61    console.log('MyAbility onCreate');
62    let AbilityLifecycleCallback: AbilityLifecycleCallback = {
63      onAbilityCreate(ability) {
64        console.log(`AbilityLifecycleCallback onAbilityCreate ability: ${ability}`);
65      },
66      onWindowStageCreate(ability, windowStage) {
67        console.log(`AbilityLifecycleCallback onWindowStageCreate ability: ${ability}`);
68        console.log(`AbilityLifecycleCallback onWindowStageCreate windowStage: ${windowStage}`);
69      },
70      onWindowStageActive(ability, windowStage) {
71        console.log(`AbilityLifecycleCallback onWindowStageActive ability: ${ability}`);
72        console.log(`AbilityLifecycleCallback onWindowStageActive windowStage: ${windowStage}`);
73      },
74      onWindowStageInactive(ability, windowStage) {
75        console.log(`AbilityLifecycleCallback onWindowStageInactive ability: ${ability}`);
76        console.log(`AbilityLifecycleCallback onWindowStageInactive windowStage: ${windowStage}`);
77      },
78      onWindowStageDestroy(ability, windowStage) {
79        console.log(`AbilityLifecycleCallback onWindowStageDestroy ability: ${ability}`);
80        console.log(`AbilityLifecycleCallback onWindowStageDestroy windowStage: ${windowStage}`);
81      },
82      onAbilityDestroy(ability) {
83        console.log(`AbilityLifecycleCallback onAbilityDestroy ability: ${ability}`);
84      },
85      onAbilityForeground(ability) {
86        console.log(`AbilityLifecycleCallback onAbilityForeground ability: ${ability}`);
87      },
88      onAbilityBackground(ability) {
89        console.log(`AbilityLifecycleCallback onAbilityBackground ability: ${ability}`);
90      },
91      onAbilityContinue(ability) {
92        console.log(`AbilityLifecycleCallback onAbilityContinue ability: ${ability}`);
93      }
94    }
95    // 1.通过context属性获取applicationContext
96    let applicationContext = this.context.getApplicationContext();
97    try {
98      // 2.通过applicationContext注册监听应用内生命周期
99      lifecycleId = applicationContext.on('abilityLifecycle', AbilityLifecycleCallback);
100    } catch (paramError) {
101      console.error(`error: ${(paramError as BusinessError).code}, ${(paramError as BusinessError).message}`);
102    }
103    console.log(`registerAbilityLifecycleCallback lifecycleId: ${lifecycleId}`);
104  }
105}
106```
107
108## ApplicationContext.off('abilityLifecycle')
109
110off(type: 'abilityLifecycle', callbackId: number,  callback: AsyncCallback\<void>): void
111
112取消监听应用内生命周期。使用callback异步回调。仅支持主线程调用。
113
114**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。
115
116**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
117
118**参数:**
119
120| 参数名        | 类型     | 必填 | 说明                       |
121| ------------- | -------- | ---- | -------------------------- |
122| type | 'abilityLifecycle' | 是   | 取消监听事件的类型。 |
123| callbackId    | number   | 是   | 注册监听应用内生命周期的ID。 |
124| callback | AsyncCallback\<void> | 是   | 回调方法。当取消监听应用内生命周期成功,err为undefined,否则为错误对象。   |
125
126**错误码**:
127
128以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
129
130| 错误码ID | 错误信息 |
131| ------- | -------- |
132| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
133
134**示例:**
135
136```ts
137import { UIAbility } from '@kit.AbilityKit';
138import { BusinessError } from '@kit.BasicServicesKit';
139
140let lifecycleId: number;
141
142export default class EntryAbility extends UIAbility {
143  onDestroy() {
144    let applicationContext = this.context.getApplicationContext();
145    console.log(`stage applicationContext: ${applicationContext}`);
146    try {
147      applicationContext.off('abilityLifecycle', lifecycleId, (error, data) => {
148        if (error) {
149          console.error(`unregisterAbilityLifecycleCallback fail, err: ${JSON.stringify(error)}`);
150        } else {
151          console.log(`unregisterAbilityLifecycleCallback success, data: ${JSON.stringify(data)}`);
152        }
153      });
154    } catch (paramError) {
155      console.error(`error: ${(paramError as BusinessError).code}, ${(paramError as BusinessError).message}`);
156    }
157  }
158}
159```
160
161## ApplicationContext.off('abilityLifecycle')
162
163off(type: 'abilityLifecycle', callbackId: number): Promise\<void>
164
165取消监听应用内生命周期。使用Promise异步回调。仅支持主线程调用。
166
167**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。
168
169**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
170
171**参数:**
172
173| 参数名        | 类型     | 必填 | 说明                       |
174| ------------- | -------- | ---- | -------------------------- |
175| type | 'abilityLifecycle' | 是   | 取消监听事件的类型。 |
176| callbackId    | number   | 是   | 注册监听应用内生命周期的ID。 |
177
178**返回值:**
179
180| 类型 | 说明 |
181| -------- | -------- |
182| Promise\<void> | Promise对象。无返回结果的Promise对象。 |
183
184**错误码**:
185
186以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
187
188| 错误码ID | 错误信息 |
189| ------- | -------- |
190| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
191
192**示例:**
193
194```ts
195import { UIAbility } from '@kit.AbilityKit';
196import { BusinessError } from '@kit.BasicServicesKit';
197
198let lifecycleId: number;
199
200export default class MyAbility extends UIAbility {
201  onDestroy() {
202    let applicationContext = this.context.getApplicationContext();
203    console.log(`stage applicationContext: ${applicationContext}`);
204    try {
205      applicationContext.off('abilityLifecycle', lifecycleId);
206    } catch (paramError) {
207      console.error(`error: ${(paramError as BusinessError).code}, ${(paramError as BusinessError).message}`);
208    }
209  }
210}
211```
212
213## ApplicationContext.on('environment')
214
215on(type: 'environment', callback: EnvironmentCallback): number
216
217注册对系统环境变化的监听。使用callback异步回调。仅支持主线程调用。
218
219**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。
220
221**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
222
223**参数:**
224
225| 参数名                   | 类型     | 必填 | 说明                           |
226| ------------------------ | -------- | ---- | ------------------------------ |
227| type | 'environment' | 是   | 监听事件的类型。 |
228| callback | [EnvironmentCallback](js-apis-app-ability-environmentCallback.md) | 是   | 回调方法,提供应用上下文ApplicationContext对系统环境变量监听回调的能力。 |
229
230**返回值:**
231
232| 类型   | 说明                           |
233| ------ | ------------------------------ |
234| number | 返回的此次注册监听系统环境变化的ID(每次注册该ID会自增+1,当超过监听上限数量2^63-1时,返回-1)。|
235
236**错误码**:
237
238以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
239
240| 错误码ID | 错误信息 |
241| ------- | -------- |
242| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
243
244**示例:**
245
246```ts
247import { UIAbility, EnvironmentCallback } from '@kit.AbilityKit';
248import { BusinessError } from '@kit.BasicServicesKit';
249
250let callbackId: number;
251
252export default class EntryAbility extends UIAbility {
253  onCreate() {
254    console.log('MyAbility onCreate')
255    let environmentCallback: EnvironmentCallback = {
256      onConfigurationUpdated(config) {
257        console.log(`onConfigurationUpdated config: ${JSON.stringify(config)}`);
258      },
259      onMemoryLevel(level) {
260        console.log(`onMemoryLevel level: ${level}`);
261      }
262    };
263    // 1.获取applicationContext
264    let applicationContext = this.context.getApplicationContext();
265    try {
266      // 2.通过applicationContext注册监听系统环境变化
267      callbackId = applicationContext.on('environment', environmentCallback);
268    } catch (paramError) {
269      console.error(`error: ${(paramError as BusinessError).code}, ${(paramError as BusinessError).message}`);
270    }
271    console.log(`registerEnvironmentCallback callbackId: ${callbackId}`);
272  }
273}
274```
275
276## ApplicationContext.off('environment')
277
278off(type: 'environment', callbackId: number,  callback: AsyncCallback\<void>): void
279
280取消对系统环境变化的监听。使用callback异步回调。仅支持主线程调用。
281
282**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。
283
284**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
285
286**参数:**
287
288| 参数名         | 类型     | 必填 | 说明                       |
289| ------------- | -------- | ---- | -------------------------- |
290| type | 'environment' | 是   | 取消监听事件的类型。 |
291| callbackId    | number   | 是   | 注册监听系统环境变化的ID。   |
292| callback | AsyncCallback\<void> | 是   | 回调方法。当取消对系统环境变化的监听成功,err为undefined,否则为错误对象。   |
293
294**错误码**:
295
296以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
297
298| 错误码ID | 错误信息 |
299| ------- | -------- |
300| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
301
302**示例:**
303
304```ts
305import { UIAbility } from '@kit.AbilityKit';
306import { BusinessError } from '@kit.BasicServicesKit';
307
308let callbackId: number;
309
310export default class EntryAbility extends UIAbility {
311  onDestroy() {
312    let applicationContext = this.context.getApplicationContext();
313    try {
314      applicationContext.off('environment', callbackId, (error, data) => {
315        if (error) {
316          console.error(`unregisterEnvironmentCallback fail, err: ${JSON.stringify(error)}`);
317        } else {
318          console.log(`unregisterEnvironmentCallback success, data: ${JSON.stringify(data)}`);
319        }
320      });
321    } catch (paramError) {
322      console.error(`error: ${(paramError as BusinessError).code}, ${(paramError as BusinessError).message}`);
323    }
324  }
325}
326```
327
328## ApplicationContext.off('environment')
329
330off(type: 'environment', callbackId: number): Promise\<void\>
331
332取消对系统环境变化的监听。使用Promise异步回调。仅支持主线程调用。
333
334**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。
335
336**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
337
338**参数:**
339
340| 参数名         | 类型     | 必填 | 说明                       |
341| ------------- | -------- | ---- | -------------------------- |
342| type | 'environment' | 是   | 取消监听事件的类型。 |
343| callbackId    | number   | 是   | 注册监听系统环境变化的ID。   |
344
345**返回值:**
346
347| 类型 | 说明 |
348| -------- | -------- |
349| Promise\<void> | Promise对象。无返回结果的Promise对象。 |
350
351**错误码**:
352
353以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
354
355| 错误码ID | 错误信息 |
356| ------- | -------- |
357| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
358
359**示例:**
360
361```ts
362import { UIAbility } from '@kit.AbilityKit';
363import { BusinessError } from '@kit.BasicServicesKit';
364
365let callbackId: number;
366
367export default class MyAbility extends UIAbility {
368  onDestroy() {
369    let applicationContext = this.context.getApplicationContext();
370    try {
371      applicationContext.off('environment', callbackId);
372    } catch (paramError) {
373      console.error(`error: ${(paramError as BusinessError).code}, ${(paramError as BusinessError).message}`);
374    }
375  }
376}
377```
378
379## ApplicationContext.on('applicationStateChange')<sup>10+</sup>
380
381on(type: 'applicationStateChange', callback: ApplicationStateChangeCallback): void
382
383注册对当前应用前后台变化的监听。使用callback异步回调。仅支持主线程调用。
384
385**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。
386
387**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
388
389**参数:**
390
391| 参数名   | 类型                                                         | 必填 | 说明             |
392| -------- | ------------------------------------------------------------ | ---- | ---------------- |
393| type     | 'applicationStateChange'                                     | 是   | 监听事件类型。 |
394| callback | [ApplicationStateChangeCallback](js-apis-app-ability-applicationStateChangeCallback.md) | 是   | 回调函数。可以对应用从后台切换到前台,以及前台切换到后台分别定义回调。       |
395
396**错误码**:
397
398以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
399
400| 错误码ID | 错误信息 |
401| ------- | -------- |
402| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
403
404**示例:**
405
406```ts
407import { UIAbility, ApplicationStateChangeCallback } from '@kit.AbilityKit';
408import { BusinessError } from '@kit.BasicServicesKit';
409
410export default class MyAbility extends UIAbility {
411  onCreate() {
412    console.log('MyAbility onCreate');
413    let applicationStateChangeCallback: ApplicationStateChangeCallback = {
414      onApplicationForeground() {
415        console.info('applicationStateChangeCallback onApplicationForeground');
416      },
417      onApplicationBackground() {
418        console.info('applicationStateChangeCallback onApplicationBackground');
419      }
420    }
421
422    // 1.获取applicationContext
423    let applicationContext = this.context.getApplicationContext();
424    try {
425      // 2.通过applicationContext注册应用前后台状态监听
426      applicationContext.on('applicationStateChange', applicationStateChangeCallback);
427    } catch (paramError) {
428      console.error(`error: ${(paramError as BusinessError).code}, ${(paramError as BusinessError).message}`);
429    }
430    console.log('Resgiter applicationStateChangeCallback');
431  }
432}
433```
434
435## ApplicationContext.off('applicationStateChange')<sup>10+</sup>
436
437off(type: 'applicationStateChange', callback?: ApplicationStateChangeCallback): void
438
439取消当前应用注册的前后台变化的全部监听。使用callback异步回调。仅支持主线程调用。
440
441**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。
442
443**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
444
445**参数:**
446
447| 参数名 | 类型          | 必填 | 说明                 |
448| ------ | ------------- | ---- | -------------------- |
449| type   | 'applicationStateChange' | 是   | 取消监听事件的类型。 |
450| callback | [ApplicationStateChangeCallback](js-apis-app-ability-applicationStateChangeCallback.md) | 否   | 回调函数。可以对应用从后台切换到前台,以及前台切换到后台分别定义回调。       |
451
452**错误码**:
453
454以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
455
456| 错误码ID | 错误信息 |
457| ------- | -------- |
458| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
459
460**示例:**
461
462```ts
463import { UIAbility } from '@kit.AbilityKit';
464import { BusinessError } from '@kit.BasicServicesKit';
465
466export default class MyAbility extends UIAbility {
467  onDestroy() {
468    let applicationContext = this.context.getApplicationContext();
469    try {
470      applicationContext.off('applicationStateChange');
471    } catch (paramError) {
472      console.error(`error: ${(paramError as BusinessError).code}, ${(paramError as BusinessError).message}`);
473    }
474  }
475}
476```
477
478## ApplicationContext.getRunningProcessInformation
479
480getRunningProcessInformation(): Promise\<Array\<ProcessInformation>>
481
482获取有关运行进程的信息。使用Promise异步回调。
483
484**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。
485
486**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
487
488**返回值:**
489
490| 类型 | 说明 |
491| -------- | -------- |
492| Promise\<Array\<[ProcessInformation](js-apis-inner-application-processInformation.md)>> | Promise对象,返回接口运行结果及有关运行进程的信息,可进行错误处理或其他自定义处理。 |
493
494**错误码**:
495
496以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
497
498| 错误码ID | 错误信息 |
499| ------- | -------- |
500| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
501| 16000011 | The context does not exist. |
502| 16000050 | Internal error. |
503
504**示例:**
505
506```ts
507import { UIAbility } from '@kit.AbilityKit';
508import { BusinessError } from '@kit.BasicServicesKit';
509
510export default class MyAbility extends UIAbility {
511  onForeground() {
512    let applicationContext = this.context.getApplicationContext();
513    applicationContext.getRunningProcessInformation().then((data) => {
514      console.log(`The process running information is: ${JSON.stringify(data)}`);
515    }).catch((error: BusinessError) => {
516      console.error(`error: ${JSON.stringify(error)}`);
517    });
518  }
519}
520```
521
522## ApplicationContext.getRunningProcessInformation
523
524getRunningProcessInformation(callback: AsyncCallback\<Array\<ProcessInformation>>): void
525
526获取有关运行进程的信息。使用callback异步回调。
527
528**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。
529
530**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
531
532**参数:**
533
534| 参数名        | 类型     | 必填 | 说明                       |
535| ------------- | -------- | ---- | -------------------------- |
536| callback    | AsyncCallback\<Array\<[ProcessInformation](js-apis-inner-application-processInformation.md)>>   | 是   | 回调函数,返回有关运行进程的信息。 |
537
538**错误码**:
539
540以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
541
542| 错误码ID | 错误信息 |
543| ------- | -------- |
544| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
545| 16000011 | The context does not exist. |
546| 16000050 | Internal error. |
547
548**示例:**
549
550```ts
551import { UIAbility } from '@kit.AbilityKit';
552
553export default class MyAbility extends UIAbility {
554  onForeground() {
555    let applicationContext = this.context.getApplicationContext();
556    applicationContext.getRunningProcessInformation((err, data) => {
557      if (err) {
558        console.error(`getRunningProcessInformation faile, err: ${JSON.stringify(err)}`);
559      } else {
560        console.log(`The process running information is: ${JSON.stringify(data)}`);
561      }
562    })
563  }
564}
565```
566
567## ApplicationContext.killAllProcesses
568
569killAllProcesses(): Promise\<void\>
570
571终止应用的所有进程,进程退出时不会正常走完应用生命周期。使用Promise异步回调。仅支持主线程调用。
572
573> **说明:**
574>
575> 该接口用于应用异常场景中强制退出应用。如需正常退出应用,可以使用[terminateSelf()](js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateself-1)接口。
576
577**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。
578
579**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
580
581**返回值:**
582
583| 类型 | 说明 |
584| -------- | -------- |
585| Promise\<void\> | Promise对象。无返回结果的Promise对象。 |
586
587**错误码**:
588
589以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
590
591| 错误码ID | 错误信息 |
592| ------- | -------- |
593| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
594| 16000011 | The context does not exist. |
595
596**示例:**
597
598```ts
599import { UIAbility } from '@kit.AbilityKit';
600
601export default class MyAbility extends UIAbility {
602  onBackground() {
603    let applicationContext = this.context.getApplicationContext();
604    applicationContext.killAllProcesses();
605  }
606}
607```
608
609## ApplicationContext.killAllProcesses<sup>14+</sup>
610
611killAllProcesses(clearPageStack: boolean): Promise\<void\>
612
613终止应用的所有进程,进程退出时不会正常走完应用生命周期。使用Promise异步回调。仅支持主线程调用。
614
615> **说明:**
616>
617> 该接口用于应用异常场景中强制退出应用。如需正常退出应用,可以使用[terminateSelf()](js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateself-1)接口。
618
619**原子化服务API**:从API version 14开始,该接口支持在原子化服务中使用。
620
621**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
622
623**参数:**
624
625| 参数名 | 类型 | 必填 | 说明 |
626| -------- | -------- | -------- | -------- |
627| clearPageStack | boolean | 是 | 表示是否清除页面堆栈。true表示清除,false表示不清除。 |
628
629**返回值:**
630
631| 类型 | 说明 |
632| -------- | -------- |
633| Promise\<void\> | Promise对象。无返回结果的Promise对象。 |
634
635**错误码**:
636
637以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
638
639| 错误码ID | 错误信息 |
640| ------- | -------- |
641| 401 | If the input parameter is not valid parameter. |
642| 16000011 | The context does not exist. |
643
644**示例:**
645
646```ts
647import { UIAbility } from '@kit.AbilityKit';
648
649let isClearPageStack = false;
650
651export default class MyAbility extends UIAbility {
652  onBackground() {
653    let applicationContext = this.context.getApplicationContext();
654    applicationContext.killAllProcesses(isClearPageStack);
655  }
656}
657```
658
659## ApplicationContext.killAllProcesses
660
661killAllProcesses(callback: AsyncCallback\<void\>)
662
663终止应用的所有进程,进程退出时不会正常走完应用生命周期。使用callback异步回调。仅支持主线程调用。
664
665> **说明:**
666>
667> 该接口用于应用异常场景中强制退出应用。如需正常退出应用,可以使用[terminateSelf()](js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateself-1)接口。
668
669**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。
670
671**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
672
673**参数:**
674
675| 参数名        | 类型     | 必填 | 说明                       |
676| ------------- | -------- | ---- | -------------------------- |
677| callback    | AsyncCallback\<void\>   | 是   | 回调函数。当终止应用所在的进程成功,err为undefined,否则为错误对象。 |
678
679**错误码**:
680
681以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
682
683| 错误码ID | 错误信息 |
684| ------- | -------- |
685| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
686| 16000011 | The context does not exist. |
687
688**示例:**
689
690```ts
691import { UIAbility } from '@kit.AbilityKit';
692
693export default class MyAbility extends UIAbility {
694  onBackground() {
695    let applicationContext = this.context.getApplicationContext();
696    applicationContext.killAllProcesses(error => {
697      if (error) {
698        console.error(`killAllProcesses fail, error: ${JSON.stringify(error)}`);
699      }
700    });
701  }
702}
703```
704## ApplicationContext.setColorMode<sup>11+</sup>
705
706setColorMode(colorMode: ConfigurationConstant.ColorMode): void
707
708设置应用的颜色模式。仅支持主线程调用。
709
710**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。
711
712**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
713
714**参数:**
715
716| 参数名 | 类型          | 必填 | 说明                 |
717| ------ | ------------- | ---- | -------------------- |
718| colorMode | [ConfigurationConstant.ColorMode](js-apis-app-ability-configurationConstant.md#colormode) | 是   | 设置颜色模式,包括:深色模式、浅色模式、不设置(跟随系统)。 |
719
720**错误码**:
721
722以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
723
724| 错误码ID | 错误信息 |
725| ------- | -------- |
726| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
727| 16000011 | The context does not exist. |
728
729**示例:**
730
731```ts
732import { UIAbility, ConfigurationConstant } from '@kit.AbilityKit';
733
734export default class MyAbility extends UIAbility {
735  onCreate() {
736    let applicationContext = this.context.getApplicationContext();
737    applicationContext.setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_DARK);
738  }
739}
740```
741
742## ApplicationContext.setLanguage<sup>11+</sup>
743
744setLanguage(language: string): void
745
746设置应用的语言。仅支持主线程调用。
747
748**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。
749
750**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
751
752**参数:**
753
754| 参数名 | 类型          | 必填 | 说明                 |
755| ------ | ------------- | ---- | -------------------- |
756| language | string | 是   | 设置语言,当前支持的语言列表可以通过[getSystemLanguages()](../apis-localization-kit/js-apis-i18n.md#getsystemlanguages9)获取。  |
757
758**错误码**:
759
760以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
761
762| 错误码ID | 错误信息 |
763| ------- | -------- |
764| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
765| 16000011 | The context does not exist. |
766
767
768**示例:**
769
770```ts
771import { UIAbility } from '@kit.AbilityKit';
772
773export default class MyAbility extends UIAbility {
774  onCreate() {
775    let applicationContext = this.context.getApplicationContext();
776    applicationContext.setLanguage('zh-cn');
777  }
778}
779```
780
781## ApplicationContext.clearUpApplicationData<sup>11+</sup>
782
783clearUpApplicationData(): Promise\<void\>
784
785清理应用本身的数据,同时撤销应用向用户申请的权限。使用Promise异步回调。仅支持主线程调用。
786
787> **说明:**
788>
789> 该接口会停止应用进程,应用进程停止后,后续的所有回调都不会再触发。
790
791**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
792
793**返回值:**
794
795| 类型 | 说明 |
796| -------- | -------- |
797| Promise\<void\> | Promise对象。无返回结果的Promise对象。 |
798
799**错误码**:
800
801以下错误码详细介绍请参考[元能力子系统错误码](errorcode-ability.md)。
802
803| 错误码ID | 错误信息 |
804| ------- | -------- |
805| 16000011 | The context does not exist. |
806| 16000050 | Internal error. |
807
808**示例:**
809
810```ts
811import { UIAbility } from '@kit.AbilityKit';
812
813export default class MyAbility extends UIAbility {
814  onBackground() {
815    let applicationContext = this.context.getApplicationContext();
816    applicationContext.clearUpApplicationData();
817  }
818}
819```
820
821## ApplicationContext.clearUpApplicationData<sup>11+</sup>
822
823clearUpApplicationData(callback: AsyncCallback\<void\>): void
824
825清理应用本身的数据,同时撤销应用向用户申请的权限。使用callback异步回调。仅支持主线程调用。
826
827> **说明:**
828>
829> 该接口会停止应用进程,应用进程停止后,后续的所有回调都不会再触发。
830
831**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
832
833**参数:**
834| 参数名        | 类型     | 必填 | 说明                       |
835| ------------- | -------- | ---- | -------------------------- |
836| callback | AsyncCallback\<void> | 是   | 回调方法。清理应用本身的数据成功时,error为undefined,否则返回错误对象。  |
837
838**错误码**:
839
840以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
841
842| 错误码ID | 错误信息 |
843| ------- | -------- |
844| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
845| 16000011 | The context does not exist. |
846| 16000050 | Internal error. |
847
848**示例:**
849
850```ts
851import { UIAbility } from '@kit.AbilityKit';
852
853export default class MyAbility extends UIAbility {
854  onBackground() {
855    let applicationContext = this.context.getApplicationContext();
856    applicationContext.clearUpApplicationData(error => {
857      if (error) {
858        console.error(`clearUpApplicationData fail, error: ${JSON.stringify(error)}`);
859      }
860    });
861  }
862}
863```
864
865## ApplicationContext.restartApp<sup>12+</sup>
866
867restartApp(want: Want): void
868
869应用重启并拉起自身指定UIAbility。重启时不会收到onDestroy回调。仅支持主线程调用,且待重启的应用需要处于获焦状态。
870
871**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。
872
873**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
874
875**参数:**
876| 参数名        | 类型     | 必填 | 说明                       |
877| ------------- | -------- | ---- | -------------------------- |
878| want | [Want](js-apis-app-ability-want.md) | 是 | Want类型参数,传入需要启动的UIAbility的信息,Bundle名称不做校验。 |
879
880**错误码**:
881
882以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
883
884| 错误码ID | 错误信息 |
885| ------- | -------- |
886| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
887| 16000050 | Internal error. |
888| 16000053 | The ability is not on the top of the UI. |
889| 16000063 | The target to restart does not belong to the current application or is not a UIAbility. |
890| 16000064 | Restart too frequently. Try again at least 10s later. |
891
892**示例:**
893
894```ts
895import { UIAbility, Want } from '@kit.AbilityKit';
896
897export default class MyAbility extends UIAbility {
898  onForeground() {
899    let applicationContext = this.context.getApplicationContext();
900    let want: Want = {
901      bundleName: 'com.example.myapp',
902      abilityName: 'EntryAbility'
903    };
904    try {
905      applicationContext.restartApp(want);
906    } catch (error) {
907      console.error(`restartApp fail, error: ${JSON.stringify(error)}`);
908    }
909  }
910}
911```
912
913## ApplicationContext.getCurrentAppCloneIndex<sup>12+</sup>
914
915getCurrentAppCloneIndex(): number
916
917获取当前应用的分身索引。
918
919**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。
920
921**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
922
923**返回值:**
924
925| 类型 | 说明 |
926| -------- | -------- |
927| number | 当前应用的分身索引。 |
928
929**错误码**:
930
931| 错误码ID | 错误信息 |
932| ------- | -------- |
933| 16000011 | The context does not exist. |
934| 16000071 | The MultiAppMode is not {@link APP_CLONE}. |
935
936以上错误码详细介绍请参考[元能力子系统错误码](errorcode-ability.md)。
937
938**示例:**
939
940```ts
941import { UIAbility } from '@kit.AbilityKit';
942
943export default class MyAbility extends UIAbility {
944  onBackground() {
945    let applicationContext = this.context.getApplicationContext();
946    try {
947      let appCloneIndex = applicationContext.getCurrentAppCloneIndex();
948    } catch (error) {
949      console.error(`getCurrentAppCloneIndex fail, error: ${JSON.stringify(error)}`);
950    }
951  }
952}
953```
954
955## ApplicationContext.setFont<sup>12+</sup>
956
957setFont(font: string): void
958
959设置应用的字体类型。仅支持主线程调用。
960
961> **说明:**
962>
963> 当页面窗口创建完成后,才能调用该接口,即需要在[onWindowStageCreate()](js-apis-app-ability-uiAbility.md#uiabilityonwindowstagecreate)生命周期之后调用。
964
965**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
966
967**参数:**
968
969| 参数名 | 类型          | 必填 | 说明                 |
970| ------ | ------------- | ---- | -------------------- |
971| font | string | 是   | 设置字体类型,字体可以通过[font.registerFont](../apis-arkui/js-apis-font.md#fontregisterfont)方法进行注册使用。  |
972
973**错误码**:
974
975以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
976
977| 错误码ID | 错误信息 |
978| ------- | -------- |
979| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
980| 16000011 | The context does not exist. |
981| 16000050 | Internal error. |
982
983
984**示例:**
985
986```ts
987import { font } from '@kit.ArkUI';
988
989@Entry
990@Component
991struct Index {
992  @State message: string = 'Hello World'
993
994  aboutToAppear() {
995    font.registerFont({
996      familyName: 'fontName',
997      familySrc: $rawfile('font/medium.ttf')
998    })
999
1000    getContext().getApplicationContext().setFont("fontName");
1001  }
1002
1003  build() {
1004    Row() {
1005      Column() {
1006        Text(this.message)
1007          .fontSize(50)
1008          .fontWeight(50)
1009      }
1010      .width('100%')
1011    }
1012    .height('100%')
1013  }
1014}
1015```
1016
1017## ApplicationContext.setSupportedProcessCache<sup>12+</sup>
1018
1019setSupportedProcessCache(isSupported : boolean): void
1020
1021应用设置自身是否支持缓存后快速启动。仅支持主线程调用。
1022
1023> **说明:**
1024>
1025> - 该接口仅表示应用自身是否为缓存后快速启动做好了准备,还需综合其他条件来判断最终是否为应用启用快速启动。
1026> - 该接口设置的缓存支持状态对单个应用进程实例生效,不同进程实例互不影响。应用进程实例销毁后,已设置的状态不保留,可以重新设置。
1027> - 如果需要支持缓存后快速启动,则需要在同一进程中所有[AbilityStage](../../reference/apis-ability-kit/js-apis-app-ability-abilityStage.md)的`onCreate()`生命周期中调用该接口、且入参均配置为“true”。
1028
1029**模型约束**:此接口仅可在Stage模型下使用。
1030
1031**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
1032
1033**参数:**
1034| 参数名        | 类型     | 必填 | 说明                       |
1035| ------------- | -------- | ---- | -------------------------- |
1036| isSupported | boolean | 是 | 表示应用是否支持缓存后快速启动。true表示支持,false表示不支持。 |
1037
1038**错误码**:
1039
1040以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)、[元能力子系统错误码](errorcode-ability.md)。
1041
1042| 错误码ID | 错误信息 |
1043| ------- | -------- |
1044| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
1045| 801      | Capability not supported.|
1046| 16000011 | The context does not exist. |
1047| 16000050 | Internal error. |
1048
1049**示例:**
1050
1051```ts
1052import { AbilityStage, Want } from '@kit.AbilityKit';
1053import { BusinessError } from '@kit.BasicServicesKit';
1054
1055class MyAbilityStage extends AbilityStage {
1056  onCreate() {
1057    let applicationContext = this.context.getApplicationContext();
1058    try {
1059      applicationContext.setSupportedProcessCache(true);
1060    } catch (error) {
1061      let code = (error as BusinessError).code;
1062      let message = (error as BusinessError).message;
1063      console.error(`setSupportedProcessCache fail, code: ${code}, msg: ${message}`);
1064    }
1065  }
1066}
1067```
1068
1069
1070## ApplicationContext.setFontSizeScale<sup>13+</sup>
1071
1072setFontSizeScale(fontSizeScale: number): void
1073
1074设置应用字体大小缩放比例。仅支持主线程调用。
1075
1076**原子化服务API**:从API version 13开始,该接口支持在原子化服务中使用。
1077
1078**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
1079
1080**参数:**
1081
1082| 参数名 | 类型          | 必填 | 说明                 |
1083| ------ | ------------- | ---- | -------------------- |
1084| fontSizeScale | number | 是   | 表示字体缩放比例,取值为非负数。当应用字体[跟随系统](../../quick-start/app-configuration-file.md#configuration标签)且该字段取值超过[fontSizeMaxScale](../../quick-start/app-configuration-file.md#configuration标签)取值时,实际生效值为[fontSizeMaxScale](../../quick-start/app-configuration-file.md#configuration标签)取值。|
1085
1086**错误码**:
1087
1088以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
1089
1090| 错误码ID | 错误信息 |
1091| ------- | -------- |
1092| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. |
1093
1094**示例:**
1095
1096```ts
1097import { UIAbility } from '@kit.AbilityKit';
1098import { window } from '@kit.ArkUI';
1099
1100export default class MyAbility extends UIAbility {
1101  onWindowStageCreate(windowStage: window.WindowStage) {
1102    windowStage.loadContent('pages/Index', (err, data) => {
1103      if (err.code) {
1104        return;
1105      }
1106      let applicationContext = this.context.getApplicationContext();
1107      applicationContext.setFontSizeScale(2);
1108    });
1109  }
1110}
1111```
1112
1113
1114## ApplicationContext.getCurrentInstanceKey<sup>14+</sup>
1115
1116getCurrentInstanceKey(): string
1117
1118获取当前应用多实例的唯一实例标识。仅支持主线程调用。
1119
1120> **说明:**
1121>
1122> 当前仅支持2in1设备。
1123
1124**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
1125
1126**返回值:**
1127
1128| 类型   | 说明                           |
1129| ------ | ------------------------------ |
1130| string | 返回当前应用多实例的唯一实例标识。|
1131
1132**错误码**:
1133
1134以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
1135
1136| 错误码ID | 错误信息 |
1137| ------- | -------- |
1138| 16000011 | The context does not exist. |
1139| 16000078 | The multi-instance is not supported. |
1140
1141**示例:**
1142
1143```ts
1144import { AbilityStage } from '@kit.AbilityKit';
1145import { BusinessError } from '@kit.BasicServicesKit';
1146
1147class MyAbilityStage extends AbilityStage {
1148  onCreate() {
1149    let applicationContext = this.context.getApplicationContext();
1150    let currentInstanceKey = '';
1151    try {
1152      currentInstanceKey = applicationContext.getCurrentInstanceKey();
1153    } catch (error) {
1154      let code = (error as BusinessError).code;
1155      let message = (error as BusinessError).message;
1156      console.error(`getCurrentInstanceKey fail, code: ${code}, msg: ${message}`);
1157    }
1158    console.log(`currentInstanceKey: ${currentInstanceKey}`);
1159  }
1160}
1161```
1162
1163## ApplicationContext.getAllRunningInstanceKeys<sup>14+</sup>
1164
1165getAllRunningInstanceKeys(): Promise\<Array\<string>>;
1166
1167获取应用的所有多实例的唯一实例标识。使用Promise异步回调。仅支持主线程调用。
1168
1169> **说明:**
1170>
1171> 当前仅支持2in1设备。
1172
1173**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
1174
1175**返回值:**
1176
1177| 类型   | 说明                           |
1178| ------ | ------------------------------ |
1179| Promise\<Array\<string>> | Promise对象,返回应用的所有多实例的唯一实例标识。|
1180
1181**错误码**:
1182
1183以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
1184
1185| 错误码ID | 错误信息 |
1186| ------- | -------- |
1187| 16000011 | The context does not exist. |
1188| 16000050 | Internal error. |
1189| 16000078 | The multi-instance is not supported. |
1190
1191**示例:**
1192
1193```ts
1194import { AbilityStage } from '@kit.AbilityKit';
1195import { BusinessError } from '@kit.BasicServicesKit';
1196
1197class MyAbilityStage extends AbilityStage {
1198  onCreate() {
1199    let applicationContext = this.context.getApplicationContext();
1200    try {
1201      applicationContext.getAllRunningInstanceKeys();
1202    } catch (error) {
1203      let code = (error as BusinessError).code;
1204      let message = (error as BusinessError).message;
1205      console.error(`getAllRunningInstanceKeys fail, code: ${code}, msg: ${message}`);
1206    }
1207  }
1208}
1209```