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/>- 如果传入已定义的回调,则取消该监听。 <br/>- 如果未传入参数,则取消当前应用对所有前后台切换事件的监听。 | 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```