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