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/>- 如果传入已定义的回调,则取消该监听。 <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, 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```