• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
610
611killAllProcesses(callback: AsyncCallback\<void\>)
612
613终止应用的所有进程,进程退出时不会正常走完应用生命周期。使用callback异步回调。仅支持主线程调用。
614
615> **说明:**
616>
617> 该接口用于应用异常场景中强制退出应用。如需正常退出应用,可以使用[terminateSelf()](./js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateself-1)接口。
618
619**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
620
621**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
622
623**参数:**
624
625| 参数名        | 类型     | 必填 | 说明                       |
626| ------------- | -------- | ---- | -------------------------- |
627| callback    | AsyncCallback\<void\>   | 是   | 回调函数。当杀死应用所在的进程成功,err为undefined,否则为错误对象。 |
628
629**错误码**:
630
631以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
632
633| 错误码ID | 错误信息 |
634| ------- | -------- |
635| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
636| 16000011 | The context does not exist. |
637
638**示例:**
639
640```ts
641import { UIAbility } from '@kit.AbilityKit';
642
643export default class MyAbility extends UIAbility {
644  onBackground() {
645    let applicationContext = this.context.getApplicationContext();
646    applicationContext.killAllProcesses(error => {
647      if (error) {
648        console.error(`killAllProcesses fail, error: ${JSON.stringify(error)}`);
649      }
650    });
651  }
652}
653```
654## ApplicationContext.setColorMode<sup>11+</sup>
655
656setColorMode(colorMode: ConfigurationConstant.ColorMode): void
657
658设置应用的颜色模式。仅支持主线程调用。
659
660**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
661
662**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
663
664**参数:**
665
666| 参数名 | 类型          | 必填 | 说明                 |
667| ------ | ------------- | ---- | -------------------- |
668| colorMode | [ConfigurationConstant.ColorMode](js-apis-app-ability-configurationConstant.md#colormode) | 是   | 设置颜色模式,包括:深色模式、浅色模式、不设置(跟随系统)。 |
669
670**错误码**:
671
672以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
673
674| 错误码ID | 错误信息 |
675| ------- | -------- |
676| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
677| 16000011 | The context does not exist. |
678
679**示例:**
680
681```ts
682import { UIAbility, ConfigurationConstant } from '@kit.AbilityKit';
683
684export default class MyAbility extends UIAbility {
685  onCreate() {
686    let applicationContext = this.context.getApplicationContext();
687    applicationContext.setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_DARK);
688  }
689}
690```
691
692## ApplicationContext.setLanguage<sup>11+</sup>
693
694setLanguage(language: string): void
695
696设置应用的语言。仅支持主线程调用。
697
698**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
699
700**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
701
702**参数:**
703
704| 参数名 | 类型          | 必填 | 说明                 |
705| ------ | ------------- | ---- | -------------------- |
706| language | string | 是   | 设置语言,当前支持的语言列表可以通过[getSystemLanguages()](../apis-localization-kit/js-apis-i18n.md#getsystemlanguages9)获取。  |
707
708**错误码**:
709
710以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
711
712| 错误码ID | 错误信息 |
713| ------- | -------- |
714| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
715| 16000011 | The context does not exist. |
716
717
718**示例:**
719
720```ts
721import { UIAbility } from '@kit.AbilityKit';
722
723export default class MyAbility extends UIAbility {
724  onCreate() {
725    let applicationContext = this.context.getApplicationContext();
726    applicationContext.setLanguage('zh-cn');
727  }
728}
729```
730
731## ApplicationContext.clearUpApplicationData<sup>11+</sup>
732
733clearUpApplicationData(): Promise\<void\>
734
735清理应用本身的数据,同时撤销应用向用户申请的权限。使用Promise异步回调。仅支持主线程调用。
736
737> **说明:**
738>
739> 该接口会停止应用进程,应用进程停止后,后续的所有回调都不会再触发。
740
741**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
742
743**返回值:**
744
745| 类型 | 说明 |
746| -------- | -------- |
747| Promise\<void\> | Promise对象。无返回结果的Promise对象。 |
748
749**错误码**:
750
751以下错误码详细介绍请参考[元能力子系统错误码](errorcode-ability.md)。
752
753| 错误码ID | 错误信息 |
754| ------- | -------- |
755| 16000011 | The context does not exist. |
756| 16000050 | Internal error. |
757
758**示例:**
759
760```ts
761import { UIAbility } from '@kit.AbilityKit';
762
763export default class MyAbility extends UIAbility {
764  onBackground() {
765    let applicationContext = this.context.getApplicationContext();
766    applicationContext.clearUpApplicationData();
767  }
768}
769```
770
771## ApplicationContext.clearUpApplicationData<sup>11+</sup>
772
773clearUpApplicationData(callback: AsyncCallback\<void\>): void
774
775清理应用本身的数据,同时撤销应用向用户申请的权限。使用callback异步回调。仅支持主线程调用。
776
777> **说明:**
778>
779> 该接口会停止应用进程,应用进程停止后,后续的所有回调都不会再触发。
780
781**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
782
783**参数:**
784| 参数名        | 类型     | 必填 | 说明                       |
785| ------------- | -------- | ---- | -------------------------- |
786| callback | AsyncCallback\<void> | 是   | 回调方法。清理应用本身的数据成功时,error为undefined,否则返回错误对象。  |
787
788**错误码**:
789
790以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
791
792| 错误码ID | 错误信息 |
793| ------- | -------- |
794| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
795| 16000011 | The context does not exist. |
796| 16000050 | Internal error. |
797
798**示例:**
799
800```ts
801import { UIAbility } from '@kit.AbilityKit';
802
803export default class MyAbility extends UIAbility {
804  onBackground() {
805    let applicationContext = this.context.getApplicationContext();
806    applicationContext.clearUpApplicationData(error => {
807      if (error) {
808        console.error(`clearUpApplicationData fail, error: ${JSON.stringify(error)}`);
809      }
810    });
811  }
812}
813```
814
815## ApplicationContext.restartApp<sup>12+</sup>
816
817restartApp(want: Want): void
818
819应用重启并拉起自身指定UIAbility。重启时不会收到onDestroy回调。仅支持主线程调用,且待重启的应用需要处于获焦状态。
820
821**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
822
823**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
824
825**参数:**
826| 参数名        | 类型     | 必填 | 说明                       |
827| ------------- | -------- | ---- | -------------------------- |
828| want | [Want](js-apis-app-ability-want.md) | 是 | Want类型参数,传入需要启动的UIAbility的信息,Bundle名称不做校验。 |
829
830**错误码**:
831
832以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
833
834| 错误码ID | 错误信息 |
835| ------- | -------- |
836| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
837| 16000050 | Internal error. |
838| 16000053 | The ability is not on the top of the UI. |
839| 16000063 | The target to restart does not belong to the current app or is not a UIAbility. |
840| 16000064 | Restart too frequently. Try again at least 10s later. |
841
842**示例:**
843
844```ts
845import { UIAbility, Want } from '@kit.AbilityKit';
846
847export default class MyAbility extends UIAbility {
848  onForeground() {
849    let applicationContext = this.context.getApplicationContext();
850    let want: Want = {
851      bundleName: 'com.example.myapp',
852      abilityName: 'EntryAbility'
853    };
854    try {
855      applicationContext.restartApp(want);
856    } catch (error) {
857      console.error(`restartApp fail, error: ${JSON.stringify(error)}`);
858    }
859  }
860}
861```
862
863## ApplicationContext.getCurrentAppCloneIndex<sup>12+</sup>
864
865getCurrentAppCloneIndex(): number
866
867获取当前应用的分身索引。
868
869**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
870
871**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
872
873**返回值:**
874
875| 类型 | 说明 |
876| -------- | -------- |
877| number | 当前应用的分身索引。 |
878
879**错误码**:
880
881| 错误码ID | 错误信息 |
882| ------- | -------- |
883| 16000011 | The context does not exist. |
884| 16000071 | The MultiAppMode is not {@link APP_CLONE}. |
885
886以上错误码详细介绍请参考[元能力子系统错误码](errorcode-ability.md)。
887
888**示例:**
889
890```ts
891import { UIAbility } from '@kit.AbilityKit';
892
893export default class MyAbility extends UIAbility {
894  onBackground() {
895    let applicationContext = this.context.getApplicationContext();
896    try {
897      let appCloneIndex = applicationContext.getCurrentAppCloneIndex();
898    } catch (error) {
899      console.error(`getCurrentAppCloneIndex fail, error: ${JSON.stringify(error)}`);
900    }
901  }
902}
903```
904
905## ApplicationContext.setFont<sup>12+</sup>
906
907setFont(font: string): void
908
909设置应用的字体类型。仅支持主线程调用。
910
911> **说明:**
912>
913> 当页面窗口创建完成后,才能调用该接口,即需要在[onWindowStageCreate()](js-apis-app-ability-uiAbility.md#uiabilityonwindowstagecreate)生命周期之后调用。
914
915**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
916
917**参数:**
918
919| 参数名 | 类型          | 必填 | 说明                 |
920| ------ | ------------- | ---- | -------------------- |
921| font | string | 是   | 设置字体类型,字体可以通过[font.registerFont](../apis-arkui/js-apis-font.md#fontregisterfont)方法进行注册使用。  |
922
923**错误码**:
924
925以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
926
927| 错误码ID | 错误信息 |
928| ------- | -------- |
929| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
930| 16000011 | The context does not exist. |
931| 16000050 | Internal error. |
932
933
934**示例:**
935
936```ts
937import { font } from '@kit.ArkUI';
938
939@Entry
940@Component
941struct Index {
942  @State message: string = 'Hello World'
943
944  aboutToAppear() {
945    font.registerFont({
946      familyName: 'fontName',
947      familySrc: $rawfile('font/medium.ttf')
948    })
949
950    getContext().getApplicationContext().setFont("fontName");
951  }
952
953  build() {
954    Row() {
955      Column() {
956        Text(this.message)
957          .fontSize(50)
958          .fontWeight(50)
959      }
960      .width('100%')
961    }
962    .height('100%')
963  }
964}
965```
966
967## ApplicationContext.setSupportedProcessCache<sup>12+</sup>
968
969setSupportedProcessCache(isSupported : boolean): void
970
971应用设置自身是否支持缓存后快速启动。仅支持主线程调用。
972
973> **说明:**
974>
975> - 该接口仅表示应用自身是否为缓存后快速启动做好了准备,还需综合其他条件来判断最终是否为应用启用快速启动。
976> - 该接口设置的缓存支持状态对单个应用进程实例生效,不同进程实例互不影响。应用进程实例销毁后,已设置的状态不保留,可以重新设置。
977
978**模型约束**:此接口仅可在Stage模型下使用。
979
980**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
981
982**参数:**
983| 参数名        | 类型     | 必填 | 说明                       |
984| ------------- | -------- | ---- | -------------------------- |
985| isSupported | boolean | 是 | 表示应用是否支持缓存后快速启动。true表示支持,false表示不支持。 |
986
987**错误码**:
988
989以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)、[元能力子系统错误码](errorcode-ability.md)。
990
991| 错误码ID | 错误信息 |
992| ------- | -------- |
993| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
994| 801      | Capability not supported.|
995| 16000011 | The context does not exist. |
996| 16000050 | Internal error. |
997
998**示例:**
999
1000```ts
1001import { UIAbility, Want, AbilityConstant } from '@kit.AbilityKit';
1002import { BusinessError } from '@kit.BasicServicesKit';
1003
1004export default class MyAbility extends UIAbility {
1005  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
1006    let applicationContext = this.context.getApplicationContext();
1007    try {
1008      applicationContext.setSupportedProcessCache(true);
1009    } catch (error) {
1010      let code = (error as BusinessError).code;
1011      let message = (error as BusinessError).message;
1012      console.error(`setSupportedProcessCache fail, code: ${code}, msg: ${message}`);
1013    }
1014  }
1015}
1016```
1017
1018
1019## ApplicationContext.setFontSizeScale<sup>13+</sup>
1020
1021setFontSizeScale(fontSizeScale: number): void
1022
1023设置应用字体大小缩放比例。仅支持主线程调用。
1024
1025**原子化服务API:** 从API version 13开始,该接口支持在原子化服务中使用。
1026
1027**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
1028
1029**参数:**
1030
1031| 参数名 | 类型          | 必填 | 说明                 |
1032| ------ | ------------- | ---- | -------------------- |
1033| 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标签)取值。|
1034
1035**错误码**:
1036
1037以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
1038
1039| 错误码ID | 错误信息 |
1040| ------- | -------- |
1041| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. |
1042
1043**示例:**
1044
1045```ts
1046import { UIAbility } from '@kit.AbilityKit';
1047import { window } from '@kit.ArkUI';
1048
1049export default class MyAbility extends UIAbility {
1050  onWindowStageCreate(windowStage: window.WindowStage) {
1051    windowStage.loadContent('pages/Index', (err, data) => {
1052      if (err.code) {
1053        return;
1054      }
1055      let applicationContext = this.context.getApplicationContext();
1056      applicationContext.setFontSizeScale(2);
1057    });
1058  }
1059}
1060```