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