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 610 611killAllProcesses(callback: AsyncCallback\<void\>) 612 613终止应用的所有进程,进程退出时不会正常走完应用生命周期。使用callback异步回调。仅支持主线程调用。 614 615> **说明:** 616> 617> 该接口用于应用异常场景中强制退出应用。如需正常退出应用,可以使用[terminateSelf()](./js-apis-inner-application-uiAbilityContext.md#uiabilitycontextterminateself-1)接口。 618 619**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 620 621**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 622 623**参数:** 624 625| 参数名 | 类型 | 必填 | 说明 | 626| ------------- | -------- | ---- | -------------------------- | 627| callback | AsyncCallback\<void\> | 是 | 回调函数。当杀死应用所在的进程成功,err为undefined,否则为错误对象。 | 628 629**错误码**: 630 631以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。 632 633| 错误码ID | 错误信息 | 634| ------- | -------- | 635| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. | 636| 16000011 | The context does not exist. | 637 638**示例:** 639 640```ts 641import { UIAbility } from '@kit.AbilityKit'; 642 643export default class MyAbility extends UIAbility { 644 onBackground() { 645 let applicationContext = this.context.getApplicationContext(); 646 applicationContext.killAllProcesses(error => { 647 if (error) { 648 console.error(`killAllProcesses fail, error: ${JSON.stringify(error)}`); 649 } 650 }); 651 } 652} 653``` 654## ApplicationContext.setColorMode<sup>11+</sup> 655 656setColorMode(colorMode: ConfigurationConstant.ColorMode): void 657 658设置应用的颜色模式。仅支持主线程调用。 659 660**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 661 662**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 663 664**参数:** 665 666| 参数名 | 类型 | 必填 | 说明 | 667| ------ | ------------- | ---- | -------------------- | 668| colorMode | [ConfigurationConstant.ColorMode](js-apis-app-ability-configurationConstant.md#colormode) | 是 | 设置颜色模式,包括:深色模式、浅色模式、不设置(跟随系统)。 | 669 670**错误码**: 671 672以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。 673 674| 错误码ID | 错误信息 | 675| ------- | -------- | 676| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. | 677| 16000011 | The context does not exist. | 678 679**示例:** 680 681```ts 682import { UIAbility, ConfigurationConstant } from '@kit.AbilityKit'; 683 684export default class MyAbility extends UIAbility { 685 onCreate() { 686 let applicationContext = this.context.getApplicationContext(); 687 applicationContext.setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_DARK); 688 } 689} 690``` 691 692## ApplicationContext.setLanguage<sup>11+</sup> 693 694setLanguage(language: string): void 695 696设置应用的语言。仅支持主线程调用。 697 698**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 699 700**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 701 702**参数:** 703 704| 参数名 | 类型 | 必填 | 说明 | 705| ------ | ------------- | ---- | -------------------- | 706| language | string | 是 | 设置语言,当前支持的语言列表可以通过[getSystemLanguages()](../apis-localization-kit/js-apis-i18n.md#getsystemlanguages9)获取。 | 707 708**错误码**: 709 710以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。 711 712| 错误码ID | 错误信息 | 713| ------- | -------- | 714| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. | 715| 16000011 | The context does not exist. | 716 717 718**示例:** 719 720```ts 721import { UIAbility } from '@kit.AbilityKit'; 722 723export default class MyAbility extends UIAbility { 724 onCreate() { 725 let applicationContext = this.context.getApplicationContext(); 726 applicationContext.setLanguage('zh-cn'); 727 } 728} 729``` 730 731## ApplicationContext.clearUpApplicationData<sup>11+</sup> 732 733clearUpApplicationData(): Promise\<void\> 734 735清理应用本身的数据,同时撤销应用向用户申请的权限。使用Promise异步回调。仅支持主线程调用。 736 737> **说明:** 738> 739> 该接口会停止应用进程,应用进程停止后,后续的所有回调都不会再触发。 740 741**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 742 743**返回值:** 744 745| 类型 | 说明 | 746| -------- | -------- | 747| Promise\<void\> | Promise对象。无返回结果的Promise对象。 | 748 749**错误码**: 750 751以下错误码详细介绍请参考[元能力子系统错误码](errorcode-ability.md)。 752 753| 错误码ID | 错误信息 | 754| ------- | -------- | 755| 16000011 | The context does not exist. | 756| 16000050 | Internal error. | 757 758**示例:** 759 760```ts 761import { UIAbility } from '@kit.AbilityKit'; 762 763export default class MyAbility extends UIAbility { 764 onBackground() { 765 let applicationContext = this.context.getApplicationContext(); 766 applicationContext.clearUpApplicationData(); 767 } 768} 769``` 770 771## ApplicationContext.clearUpApplicationData<sup>11+</sup> 772 773clearUpApplicationData(callback: AsyncCallback\<void\>): void 774 775清理应用本身的数据,同时撤销应用向用户申请的权限。使用callback异步回调。仅支持主线程调用。 776 777> **说明:** 778> 779> 该接口会停止应用进程,应用进程停止后,后续的所有回调都不会再触发。 780 781**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 782 783**参数:** 784| 参数名 | 类型 | 必填 | 说明 | 785| ------------- | -------- | ---- | -------------------------- | 786| callback | AsyncCallback\<void> | 是 | 回调方法。清理应用本身的数据成功时,error为undefined,否则返回错误对象。 | 787 788**错误码**: 789 790以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。 791 792| 错误码ID | 错误信息 | 793| ------- | -------- | 794| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. | 795| 16000011 | The context does not exist. | 796| 16000050 | Internal error. | 797 798**示例:** 799 800```ts 801import { UIAbility } from '@kit.AbilityKit'; 802 803export default class MyAbility extends UIAbility { 804 onBackground() { 805 let applicationContext = this.context.getApplicationContext(); 806 applicationContext.clearUpApplicationData(error => { 807 if (error) { 808 console.error(`clearUpApplicationData fail, error: ${JSON.stringify(error)}`); 809 } 810 }); 811 } 812} 813``` 814 815## ApplicationContext.restartApp<sup>12+</sup> 816 817restartApp(want: Want): void 818 819应用重启并拉起自身指定UIAbility。重启时不会收到onDestroy回调。仅支持主线程调用,且待重启的应用需要处于获焦状态。 820 821**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 822 823**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 824 825**参数:** 826| 参数名 | 类型 | 必填 | 说明 | 827| ------------- | -------- | ---- | -------------------------- | 828| want | [Want](js-apis-app-ability-want.md) | 是 | Want类型参数,传入需要启动的UIAbility的信息,Bundle名称不做校验。 | 829 830**错误码**: 831 832以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。 833 834| 错误码ID | 错误信息 | 835| ------- | -------- | 836| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. | 837| 16000050 | Internal error. | 838| 16000053 | The ability is not on the top of the UI. | 839| 16000063 | The target to restart does not belong to the current app or is not a UIAbility. | 840| 16000064 | Restart too frequently. Try again at least 10s later. | 841 842**示例:** 843 844```ts 845import { UIAbility, Want } from '@kit.AbilityKit'; 846 847export default class MyAbility extends UIAbility { 848 onForeground() { 849 let applicationContext = this.context.getApplicationContext(); 850 let want: Want = { 851 bundleName: 'com.example.myapp', 852 abilityName: 'EntryAbility' 853 }; 854 try { 855 applicationContext.restartApp(want); 856 } catch (error) { 857 console.error(`restartApp fail, error: ${JSON.stringify(error)}`); 858 } 859 } 860} 861``` 862 863## ApplicationContext.getCurrentAppCloneIndex<sup>12+</sup> 864 865getCurrentAppCloneIndex(): number 866 867获取当前应用的分身索引。 868 869**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 870 871**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 872 873**返回值:** 874 875| 类型 | 说明 | 876| -------- | -------- | 877| number | 当前应用的分身索引。 | 878 879**错误码**: 880 881| 错误码ID | 错误信息 | 882| ------- | -------- | 883| 16000011 | The context does not exist. | 884| 16000071 | The MultiAppMode is not {@link APP_CLONE}. | 885 886以上错误码详细介绍请参考[元能力子系统错误码](errorcode-ability.md)。 887 888**示例:** 889 890```ts 891import { UIAbility } from '@kit.AbilityKit'; 892 893export default class MyAbility extends UIAbility { 894 onBackground() { 895 let applicationContext = this.context.getApplicationContext(); 896 try { 897 let appCloneIndex = applicationContext.getCurrentAppCloneIndex(); 898 } catch (error) { 899 console.error(`getCurrentAppCloneIndex fail, error: ${JSON.stringify(error)}`); 900 } 901 } 902} 903``` 904 905## ApplicationContext.setFont<sup>12+</sup> 906 907setFont(font: string): void 908 909设置应用的字体类型。仅支持主线程调用。 910 911> **说明:** 912> 913> 当页面窗口创建完成后,才能调用该接口,即需要在[onWindowStageCreate()](js-apis-app-ability-uiAbility.md#uiabilityonwindowstagecreate)生命周期之后调用。 914 915**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 916 917**参数:** 918 919| 参数名 | 类型 | 必填 | 说明 | 920| ------ | ------------- | ---- | -------------------- | 921| font | string | 是 | 设置字体类型,字体可以通过[font.registerFont](../apis-arkui/js-apis-font.md#fontregisterfont)方法进行注册使用。 | 922 923**错误码**: 924 925以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。 926 927| 错误码ID | 错误信息 | 928| ------- | -------- | 929| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. | 930| 16000011 | The context does not exist. | 931| 16000050 | Internal error. | 932 933 934**示例:** 935 936```ts 937import { font } from '@kit.ArkUI'; 938 939@Entry 940@Component 941struct Index { 942 @State message: string = 'Hello World' 943 944 aboutToAppear() { 945 font.registerFont({ 946 familyName: 'fontName', 947 familySrc: $rawfile('font/medium.ttf') 948 }) 949 950 getContext().getApplicationContext().setFont("fontName"); 951 } 952 953 build() { 954 Row() { 955 Column() { 956 Text(this.message) 957 .fontSize(50) 958 .fontWeight(50) 959 } 960 .width('100%') 961 } 962 .height('100%') 963 } 964} 965``` 966 967## ApplicationContext.setSupportedProcessCache<sup>12+</sup> 968 969setSupportedProcessCache(isSupported : boolean): void 970 971应用设置自身是否支持缓存后快速启动。仅支持主线程调用。 972 973> **说明:** 974> 975> - 该接口仅表示应用自身是否为缓存后快速启动做好了准备,还需综合其他条件来判断最终是否为应用启用快速启动。 976> - 该接口设置的缓存支持状态对单个应用进程实例生效,不同进程实例互不影响。应用进程实例销毁后,已设置的状态不保留,可以重新设置。 977 978**模型约束**:此接口仅可在Stage模型下使用。 979 980**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 981 982**参数:** 983| 参数名 | 类型 | 必填 | 说明 | 984| ------------- | -------- | ---- | -------------------------- | 985| isSupported | boolean | 是 | 表示应用是否支持缓存后快速启动。true表示支持,false表示不支持。 | 986 987**错误码**: 988 989以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)、[元能力子系统错误码](errorcode-ability.md)。 990 991| 错误码ID | 错误信息 | 992| ------- | -------- | 993| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. | 994| 801 | Capability not supported.| 995| 16000011 | The context does not exist. | 996| 16000050 | Internal error. | 997 998**示例:** 999 1000```ts 1001import { UIAbility, Want, AbilityConstant } from '@kit.AbilityKit'; 1002import { BusinessError } from '@kit.BasicServicesKit'; 1003 1004export default class MyAbility extends UIAbility { 1005 onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) { 1006 let applicationContext = this.context.getApplicationContext(); 1007 try { 1008 applicationContext.setSupportedProcessCache(true); 1009 } catch (error) { 1010 let code = (error as BusinessError).code; 1011 let message = (error as BusinessError).message; 1012 console.error(`setSupportedProcessCache fail, code: ${code}, msg: ${message}`); 1013 } 1014 } 1015} 1016``` 1017 1018 1019## ApplicationContext.setFontSizeScale<sup>13+</sup> 1020 1021setFontSizeScale(fontSizeScale: number): void 1022 1023设置应用字体大小缩放比例。仅支持主线程调用。 1024 1025**原子化服务API:** 从API version 13开始,该接口支持在原子化服务中使用。 1026 1027**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 1028 1029**参数:** 1030 1031| 参数名 | 类型 | 必填 | 说明 | 1032| ------ | ------------- | ---- | -------------------- | 1033| 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标签)取值。| 1034 1035**错误码**: 1036 1037以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。 1038 1039| 错误码ID | 错误信息 | 1040| ------- | -------- | 1041| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. | 1042 1043**示例:** 1044 1045```ts 1046import { UIAbility } from '@kit.AbilityKit'; 1047import { window } from '@kit.ArkUI'; 1048 1049export default class MyAbility extends UIAbility { 1050 onWindowStageCreate(windowStage: window.WindowStage) { 1051 windowStage.loadContent('pages/Index', (err, data) => { 1052 if (err.code) { 1053 return; 1054 } 1055 let applicationContext = this.context.getApplicationContext(); 1056 applicationContext.setFontSizeScale(2); 1057 }); 1058 } 1059} 1060```