• 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> **说明:**
442>
443> 使用该接口前,需要先使用[ApplicationContext.on('applicationStateChange')](#applicationcontextonapplicationstatechange10)注册事件监听。
444
445**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。
446
447**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
448
449**参数:**
450
451| 参数名 | 类型          | 必填 | 说明                 |
452| ------ | ------------- | ---- | -------------------- |
453| type   | 'applicationStateChange' | 是   | 取消监听事件的类型。 |
454| callback | [ApplicationStateChangeCallback](js-apis-app-ability-applicationStateChangeCallback.md) | 否   | 回调函数。取值可以为使用ApplicationContext.on('applicationStateChange')方法定义的callback回调,也可以为空。<br/>-&nbsp;如果传入已定义的回调,则取消该监听。 <br/>-&nbsp;如果未传入参数,则取消当前应用对所有前后台切换事件的监听。  |
455
456**错误码**:
457
458以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
459
460| 错误码ID | 错误信息 |
461| ------- | -------- |
462| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
463
464**示例:**
465
466假定已使用[ApplicationContext.on('applicationStateChange')](#applicationcontextonapplicationstatechange10)方法注册名为applicationStateChangeCallback回调,下面示例展示如何取消对应的事件监听。
467
468```ts
469import { UIAbility } from '@kit.AbilityKit';
470import { BusinessError } from '@kit.BasicServicesKit';
471
472export default class MyAbility extends UIAbility {
473  onDestroy() {
474    let applicationContext = this.context.getApplicationContext();
475    try {
476      // 本例中的callback字段取值为ApplicationStateChangeCallback,需要替换为实际值。
477      // 如果callback字段不传入参数,则取消当前应用对所有前后台切换事件的监听。
478      applicationContext.off('applicationStateChange', applicationStateChangeCallback);
479    } catch (paramError) {
480      console.error(`error: ${(paramError as BusinessError).code}, ${(paramError as BusinessError).message}`);
481    }
482  }
483}
484```
485
486## ApplicationContext.getRunningProcessInformation
487
488getRunningProcessInformation(): Promise\<Array\<ProcessInformation>>
489
490获取有关运行进程的信息。使用Promise异步回调。
491
492**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。
493
494**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
495
496**返回值:**
497
498| 类型 | 说明 |
499| -------- | -------- |
500| Promise\<Array\<[ProcessInformation](js-apis-inner-application-processInformation.md)>> | Promise对象,返回接口运行结果及有关运行进程的信息,可进行错误处理或其他自定义处理。 |
501
502**错误码**:
503
504以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
505
506| 错误码ID | 错误信息 |
507| ------- | -------- |
508| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
509| 16000011 | The context does not exist. |
510| 16000050 | Internal error. |
511
512**示例:**
513
514```ts
515import { UIAbility } from '@kit.AbilityKit';
516import { BusinessError } from '@kit.BasicServicesKit';
517
518export default class MyAbility extends UIAbility {
519  onForeground() {
520    let applicationContext = this.context.getApplicationContext();
521    applicationContext.getRunningProcessInformation().then((data) => {
522      console.log(`The process running information is: ${JSON.stringify(data)}`);
523    }).catch((error: BusinessError) => {
524      console.error(`error: ${JSON.stringify(error)}`);
525    });
526  }
527}
528```
529
530## ApplicationContext.getRunningProcessInformation
531
532getRunningProcessInformation(callback: AsyncCallback\<Array\<ProcessInformation>>): void
533
534获取有关运行进程的信息。使用callback异步回调。
535
536**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。
537
538**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
539
540**参数:**
541
542| 参数名        | 类型     | 必填 | 说明                       |
543| ------------- | -------- | ---- | -------------------------- |
544| callback    | AsyncCallback\<Array\<[ProcessInformation](js-apis-inner-application-processInformation.md)>>   | 是   | 回调函数,返回有关运行进程的信息。 |
545
546**错误码**:
547
548以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
549
550| 错误码ID | 错误信息 |
551| ------- | -------- |
552| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
553| 16000011 | The context does not exist. |
554| 16000050 | Internal error. |
555
556**示例:**
557
558```ts
559import { UIAbility } from '@kit.AbilityKit';
560
561export default class MyAbility extends UIAbility {
562  onForeground() {
563    let applicationContext = this.context.getApplicationContext();
564    applicationContext.getRunningProcessInformation((err, data) => {
565      if (err) {
566        console.error(`getRunningProcessInformation faile, err: ${JSON.stringify(err)}`);
567      } else {
568        console.log(`The process running information is: ${JSON.stringify(data)}`);
569      }
570    })
571  }
572}
573```
574
575## ApplicationContext.killAllProcesses
576
577killAllProcesses(): Promise\<void\>
578
579终止应用的所有进程,进程退出时不会正常走完应用生命周期。使用Promise异步回调。仅支持主线程调用。
580
581> **说明:**
582>
583> 该接口用于应用异常场景中强制退出应用。如需正常退出应用,可以使用[terminateSelf()](js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateself-1)接口。
584
585**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。
586
587**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
588
589**返回值:**
590
591| 类型 | 说明 |
592| -------- | -------- |
593| Promise\<void\> | Promise对象。无返回结果的Promise对象。 |
594
595**错误码**:
596
597以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
598
599| 错误码ID | 错误信息 |
600| ------- | -------- |
601| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
602| 16000011 | The context does not exist. |
603
604**示例:**
605
606```ts
607import { UIAbility } from '@kit.AbilityKit';
608
609export default class MyAbility extends UIAbility {
610  onBackground() {
611    let applicationContext = this.context.getApplicationContext();
612    applicationContext.killAllProcesses();
613  }
614}
615```
616
617## ApplicationContext.killAllProcesses<sup>14+</sup>
618
619killAllProcesses(clearPageStack: boolean): Promise\<void\>
620
621终止应用的所有进程,进程退出时不会正常走完应用生命周期。使用Promise异步回调。仅支持主线程调用。
622
623> **说明:**
624>
625> 该接口用于应用异常场景中强制退出应用。如需正常退出应用,可以使用[terminateSelf()](js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateself-1)接口。
626
627**原子化服务API**:从API version 14开始,该接口支持在原子化服务中使用。
628
629**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
630
631**参数:**
632
633| 参数名 | 类型 | 必填 | 说明 |
634| -------- | -------- | -------- | -------- |
635| clearPageStack | boolean | 是 | 表示是否清除页面堆栈。true表示清除,false表示不清除。 |
636
637**返回值:**
638
639| 类型 | 说明 |
640| -------- | -------- |
641| Promise\<void\> | Promise对象。无返回结果的Promise对象。 |
642
643**错误码**:
644
645以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
646
647| 错误码ID | 错误信息 |
648| ------- | -------- |
649| 401 | If the input parameter is not valid parameter. |
650| 16000011 | The context does not exist. |
651
652**示例:**
653
654```ts
655import { UIAbility } from '@kit.AbilityKit';
656
657let isClearPageStack = false;
658
659export default class MyAbility extends UIAbility {
660  onBackground() {
661    let applicationContext = this.context.getApplicationContext();
662    applicationContext.killAllProcesses(isClearPageStack);
663  }
664}
665```
666
667## ApplicationContext.killAllProcesses
668
669killAllProcesses(callback: AsyncCallback\<void\>)
670
671终止应用的所有进程,进程退出时不会正常走完应用生命周期。使用callback异步回调。仅支持主线程调用。
672
673> **说明:**
674>
675> 该接口用于应用异常场景中强制退出应用。如需正常退出应用,可以使用[terminateSelf()](js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateself-1)接口。
676
677**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。
678
679**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
680
681**参数:**
682
683| 参数名        | 类型     | 必填 | 说明                       |
684| ------------- | -------- | ---- | -------------------------- |
685| callback    | AsyncCallback\<void\>   | 是   | 回调函数。当终止应用所在的进程成功,err为undefined,否则为错误对象。 |
686
687**错误码**:
688
689以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
690
691| 错误码ID | 错误信息 |
692| ------- | -------- |
693| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
694| 16000011 | The context does not exist. |
695
696**示例:**
697
698```ts
699import { UIAbility } from '@kit.AbilityKit';
700
701export default class MyAbility extends UIAbility {
702  onBackground() {
703    let applicationContext = this.context.getApplicationContext();
704    applicationContext.killAllProcesses(error => {
705      if (error) {
706        console.error(`killAllProcesses fail, error: ${JSON.stringify(error)}`);
707      }
708    });
709  }
710}
711```
712## ApplicationContext.setColorMode<sup>11+</sup>
713
714setColorMode(colorMode: ConfigurationConstant.ColorMode): void
715
716设置应用的颜色模式。仅支持主线程调用。
717
718**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。
719
720**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
721
722**参数:**
723
724| 参数名 | 类型          | 必填 | 说明                 |
725| ------ | ------------- | ---- | -------------------- |
726| colorMode | [ConfigurationConstant.ColorMode](js-apis-app-ability-configurationConstant.md#colormode) | 是   | 设置颜色模式,包括:深色模式、浅色模式、不设置(跟随系统)。 |
727
728**错误码**:
729
730以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
731
732| 错误码ID | 错误信息 |
733| ------- | -------- |
734| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
735| 16000011 | The context does not exist. |
736
737**示例:**
738
739```ts
740import { UIAbility, ConfigurationConstant } from '@kit.AbilityKit';
741
742export default class MyAbility extends UIAbility {
743  onCreate() {
744    let applicationContext = this.context.getApplicationContext();
745    applicationContext.setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_DARK);
746  }
747}
748```
749
750## ApplicationContext.setLanguage<sup>11+</sup>
751
752setLanguage(language: string): void
753
754设置应用的语言。仅支持主线程调用。
755
756**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。
757
758**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
759
760**参数:**
761
762| 参数名 | 类型          | 必填 | 说明                 |
763| ------ | ------------- | ---- | -------------------- |
764| language | string | 是   | 设置语言,当前支持的语言列表可以通过[getSystemLanguages()](../apis-localization-kit/js-apis-i18n.md#getsystemlanguages9)获取。  |
765
766**错误码**:
767
768以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
769
770| 错误码ID | 错误信息 |
771| ------- | -------- |
772| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
773| 16000011 | The context does not exist. |
774
775
776**示例:**
777
778```ts
779import { UIAbility } from '@kit.AbilityKit';
780
781export default class MyAbility extends UIAbility {
782  onCreate() {
783    let applicationContext = this.context.getApplicationContext();
784    applicationContext.setLanguage('zh-cn');
785  }
786}
787```
788
789## ApplicationContext.clearUpApplicationData<sup>11+</sup>
790
791clearUpApplicationData(): Promise\<void\>
792
793清理应用本身的数据,同时撤销应用向用户申请的权限。使用Promise异步回调。仅支持主线程调用。
794
795> **说明:**
796>
797> 该接口会停止应用进程,应用进程停止后,后续的所有回调都不会再触发。
798
799**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
800
801**返回值:**
802
803| 类型 | 说明 |
804| -------- | -------- |
805| Promise\<void\> | Promise对象。无返回结果的Promise对象。 |
806
807**错误码**:
808
809以下错误码详细介绍请参考[元能力子系统错误码](errorcode-ability.md)。
810
811| 错误码ID | 错误信息 |
812| ------- | -------- |
813| 16000011 | The context does not exist. |
814| 16000050 | Internal error. |
815
816**示例:**
817
818```ts
819import { UIAbility } from '@kit.AbilityKit';
820
821export default class MyAbility extends UIAbility {
822  onBackground() {
823    let applicationContext = this.context.getApplicationContext();
824    applicationContext.clearUpApplicationData();
825  }
826}
827```
828
829## ApplicationContext.clearUpApplicationData<sup>11+</sup>
830
831clearUpApplicationData(callback: AsyncCallback\<void\>): void
832
833清理应用本身的数据,同时撤销应用向用户申请的权限。使用callback异步回调。仅支持主线程调用。
834
835> **说明:**
836>
837> 该接口会停止应用进程,应用进程停止后,后续的所有回调都不会再触发。
838
839**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
840
841**参数:**
842| 参数名        | 类型     | 必填 | 说明                       |
843| ------------- | -------- | ---- | -------------------------- |
844| callback | AsyncCallback\<void> | 是   | 回调方法。清理应用本身的数据成功时,error为undefined,否则返回错误对象。  |
845
846**错误码**:
847
848以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
849
850| 错误码ID | 错误信息 |
851| ------- | -------- |
852| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
853| 16000011 | The context does not exist. |
854| 16000050 | Internal error. |
855
856**示例:**
857
858```ts
859import { UIAbility } from '@kit.AbilityKit';
860
861export default class MyAbility extends UIAbility {
862  onBackground() {
863    let applicationContext = this.context.getApplicationContext();
864    applicationContext.clearUpApplicationData(error => {
865      if (error) {
866        console.error(`clearUpApplicationData fail, error: ${JSON.stringify(error)}`);
867      }
868    });
869  }
870}
871```
872
873## ApplicationContext.restartApp<sup>12+</sup>
874
875restartApp(want: Want): void
876
877应用重启并拉起自身指定UIAbility。重启时不会收到onDestroy回调。仅支持主线程调用,且待重启的应用需要处于获焦状态。
878
879**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。
880
881**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
882
883**参数:**
884| 参数名        | 类型     | 必填 | 说明                       |
885| ------------- | -------- | ---- | -------------------------- |
886| want | [Want](js-apis-app-ability-want.md) | 是 | Want类型参数,传入需要启动的UIAbility的信息,Bundle名称不做校验。 |
887
888**错误码**:
889
890以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
891
892| 错误码ID | 错误信息 |
893| ------- | -------- |
894| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
895| 16000050 | Internal error. |
896| 16000053 | The ability is not on the top of the UI. |
897| 16000063 | The target to restart does not belong to the current application or is not a UIAbility. |
898| 16000064 | Restart too frequently. Try again at least 3s later. |
899
900**示例:**
901
902```ts
903import { UIAbility, Want } from '@kit.AbilityKit';
904
905export default class MyAbility extends UIAbility {
906  onForeground() {
907    let applicationContext = this.context.getApplicationContext();
908    let want: Want = {
909      bundleName: 'com.example.myapp',
910      abilityName: 'EntryAbility'
911    };
912    try {
913      applicationContext.restartApp(want);
914    } catch (error) {
915      console.error(`restartApp fail, error: ${JSON.stringify(error)}`);
916    }
917  }
918}
919```
920
921## ApplicationContext.getCurrentAppCloneIndex<sup>12+</sup>
922
923getCurrentAppCloneIndex(): number
924
925获取当前应用的分身索引。
926
927**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。
928
929**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
930
931**返回值:**
932
933| 类型 | 说明 |
934| -------- | -------- |
935| number | 当前应用的分身索引。 |
936
937**错误码**:
938
939| 错误码ID | 错误信息 |
940| ------- | -------- |
941| 16000011 | The context does not exist. |
942| 16000071 | The MultiAppMode is not {@link APP_CLONE}. |
943
944以上错误码详细介绍请参考[元能力子系统错误码](errorcode-ability.md)。
945
946**示例:**
947
948```ts
949import { UIAbility } from '@kit.AbilityKit';
950
951export default class MyAbility extends UIAbility {
952  onBackground() {
953    let applicationContext = this.context.getApplicationContext();
954    try {
955      let appCloneIndex = applicationContext.getCurrentAppCloneIndex();
956    } catch (error) {
957      console.error(`getCurrentAppCloneIndex fail, error: ${JSON.stringify(error)}`);
958    }
959  }
960}
961```
962
963## ApplicationContext.setFont<sup>12+</sup>
964
965setFont(font: string): void
966
967设置应用的字体类型。仅支持主线程调用。
968
969> **说明:**
970>
971> 当页面窗口创建完成后,才能调用该接口,即需要在[onWindowStageCreate()](js-apis-app-ability-uiAbility.md#uiabilityonwindowstagecreate)生命周期之后调用。
972
973**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
974
975**参数:**
976
977| 参数名 | 类型          | 必填 | 说明                 |
978| ------ | ------------- | ---- | -------------------- |
979| font | string | 是   | 设置字体类型,字体可以通过[font.registerFont](../apis-arkui/js-apis-font.md#fontregisterfont)方法进行注册使用。  |
980
981**错误码**:
982
983以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
984
985| 错误码ID | 错误信息 |
986| ------- | -------- |
987| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
988| 16000011 | The context does not exist. |
989| 16000050 | Internal error. |
990
991
992**示例:**
993
994```ts
995import { font } from '@kit.ArkUI';
996
997@Entry
998@Component
999struct Index {
1000  @State message: string = 'Hello World'
1001
1002  aboutToAppear() {
1003    font.registerFont({
1004      familyName: 'fontName',
1005      familySrc: $rawfile('font/medium.ttf')
1006    })
1007
1008    getContext().getApplicationContext().setFont("fontName");
1009  }
1010
1011  build() {
1012    Row() {
1013      Column() {
1014        Text(this.message)
1015          .fontSize(50)
1016          .fontWeight(50)
1017      }
1018      .width('100%')
1019    }
1020    .height('100%')
1021  }
1022}
1023```
1024
1025## ApplicationContext.setSupportedProcessCache<sup>12+</sup>
1026
1027setSupportedProcessCache(isSupported : boolean): void
1028
1029应用设置自身是否支持缓存后快速启动。仅支持主线程调用。
1030
1031> **说明:**
1032>
1033> - 该接口仅表示应用自身是否为缓存后快速启动做好了准备,还需综合其他条件来判断最终是否为应用启用快速启动。
1034> - 该接口设置的缓存支持状态对单个应用进程实例生效,不同进程实例互不影响。应用进程实例销毁后,已设置的状态不保留,可以重新设置。
1035> - 如果需要支持缓存后快速启动,则需要在同一进程中所有[AbilityStage](../../reference/apis-ability-kit/js-apis-app-ability-abilityStage.md)的`onCreate()`生命周期中调用该接口、且入参均配置为“true”。
1036
1037**模型约束**:此接口仅可在Stage模型下使用。
1038
1039**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
1040
1041**参数:**
1042| 参数名        | 类型     | 必填 | 说明                       |
1043| ------------- | -------- | ---- | -------------------------- |
1044| isSupported | boolean | 是 | 表示应用是否支持缓存后快速启动。true表示支持,false表示不支持。 |
1045
1046**错误码**:
1047
1048以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)、[元能力子系统错误码](errorcode-ability.md)。
1049
1050| 错误码ID | 错误信息 |
1051| ------- | -------- |
1052| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. |
1053| 801      | Capability not supported.|
1054| 16000011 | The context does not exist. |
1055| 16000050 | Internal error. |
1056
1057**示例:**
1058
1059```ts
1060import { AbilityStage, Want } from '@kit.AbilityKit';
1061import { BusinessError } from '@kit.BasicServicesKit';
1062
1063class MyAbilityStage extends AbilityStage {
1064  onCreate() {
1065    let applicationContext = this.context.getApplicationContext();
1066    try {
1067      applicationContext.setSupportedProcessCache(true);
1068    } catch (error) {
1069      let code = (error as BusinessError).code;
1070      let message = (error as BusinessError).message;
1071      console.error(`setSupportedProcessCache fail, code: ${code}, msg: ${message}`);
1072    }
1073  }
1074}
1075```
1076
1077
1078## ApplicationContext.setFontSizeScale<sup>13+</sup>
1079
1080setFontSizeScale(fontSizeScale: number): void
1081
1082设置应用字体大小缩放比例。仅支持主线程调用。
1083
1084**原子化服务API**:从API version 13开始,该接口支持在原子化服务中使用。
1085
1086**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
1087
1088**参数:**
1089
1090| 参数名 | 类型          | 必填 | 说明                 |
1091| ------ | ------------- | ---- | -------------------- |
1092| 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标签)取值。|
1093
1094**错误码**:
1095
1096以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
1097
1098| 错误码ID | 错误信息 |
1099| ------- | -------- |
1100| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. |
1101
1102**示例:**
1103
1104```ts
1105import { UIAbility } from '@kit.AbilityKit';
1106import { window } from '@kit.ArkUI';
1107
1108export default class MyAbility extends UIAbility {
1109  onWindowStageCreate(windowStage: window.WindowStage) {
1110    windowStage.loadContent('pages/Index', (err, data) => {
1111      if (err.code) {
1112        return;
1113      }
1114      let applicationContext = this.context.getApplicationContext();
1115      applicationContext.setFontSizeScale(2);
1116    });
1117  }
1118}
1119```
1120
1121
1122## ApplicationContext.getCurrentInstanceKey<sup>14+</sup>
1123
1124getCurrentInstanceKey(): string
1125
1126获取当前应用多实例的唯一实例标识。仅支持主线程调用。
1127
1128> **说明:**
1129>
1130> 当前仅支持2in1设备。
1131
1132**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
1133
1134**返回值:**
1135
1136| 类型   | 说明                           |
1137| ------ | ------------------------------ |
1138| string | 返回当前应用多实例的唯一实例标识。|
1139
1140**错误码**:
1141
1142以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
1143
1144| 错误码ID | 错误信息 |
1145| ------- | -------- |
1146| 16000011 | The context does not exist. |
1147| 16000078 | The multi-instance is not supported. |
1148
1149**示例:**
1150
1151```ts
1152import { AbilityStage } from '@kit.AbilityKit';
1153import { BusinessError } from '@kit.BasicServicesKit';
1154
1155class MyAbilityStage extends AbilityStage {
1156  onCreate() {
1157    let applicationContext = this.context.getApplicationContext();
1158    let currentInstanceKey = '';
1159    try {
1160      currentInstanceKey = applicationContext.getCurrentInstanceKey();
1161    } catch (error) {
1162      let code = (error as BusinessError).code;
1163      let message = (error as BusinessError).message;
1164      console.error(`getCurrentInstanceKey fail, code: ${code}, msg: ${message}`);
1165    }
1166    console.log(`currentInstanceKey: ${currentInstanceKey}`);
1167  }
1168}
1169```
1170
1171## ApplicationContext.getAllRunningInstanceKeys<sup>14+</sup>
1172
1173getAllRunningInstanceKeys(): Promise\<Array\<string>>;
1174
1175获取应用的所有多实例的唯一实例标识。使用Promise异步回调。仅支持主线程调用。
1176
1177> **说明:**
1178>
1179> 当前仅支持2in1设备。
1180
1181**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
1182
1183**返回值:**
1184
1185| 类型   | 说明                           |
1186| ------ | ------------------------------ |
1187| Promise\<Array\<string>> | Promise对象,返回应用的所有多实例的唯一实例标识。|
1188
1189**错误码**:
1190
1191以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
1192
1193| 错误码ID | 错误信息 |
1194| ------- | -------- |
1195| 16000011 | The context does not exist. |
1196| 16000050 | Internal error. |
1197| 16000078 | The multi-instance is not supported. |
1198
1199**示例:**
1200
1201```ts
1202import { AbilityStage } from '@kit.AbilityKit';
1203import { BusinessError } from '@kit.BasicServicesKit';
1204
1205class MyAbilityStage extends AbilityStage {
1206  onCreate() {
1207    let applicationContext = this.context.getApplicationContext();
1208    try {
1209      applicationContext.getAllRunningInstanceKeys();
1210    } catch (error) {
1211      let code = (error as BusinessError).code;
1212      let message = (error as BusinessError).message;
1213      console.error(`getAllRunningInstanceKeys fail, code: ${code}, msg: ${message}`);
1214    }
1215  }
1216}
1217```