# ApplicationContext (应用上下文) ApplicationContext作为应用上下文,继承自[Context](js-apis-inner-application-context.md),提供了应用生命周期监听、进程管理、应用环境设置等应用级别的管控能力。 > **说明:** > > 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 > 本模块接口仅可在Stage模型下使用。 ## 导入模块 ```ts import { common } from '@kit.AbilityKit'; ``` ## ApplicationContext.on('abilityLifecycle') on(type: 'abilityLifecycle', callback: AbilityLifecycleCallback): number 注册监听应用内UIAbility的生命周期。使用callback异步回调。仅支持主线程调用。 **原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------------------------ | -------- | ---- | ------------------------------ | | type | 'abilityLifecycle' | 是 | 此类型表示应用内UIAbility的生命周期。 | | callback | [AbilityLifecycleCallback](js-apis-app-ability-abilityLifecycleCallback.md) | 是 | UIAbility生命周期变化时触发的回调方法。 | **返回值:** | 类型 | 说明 | | ------ | ------------------------------------------------------------ | | number | 返回此次注册的callbackID,该ID用于在[ApplicationContext.off('abilityLifecycle')](#applicationcontextoffabilitylifecycle)方法中取消注册对应的callback。 | **错误码**: 以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。 | 错误码ID | 错误信息 | | ------- | -------- | | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. | **示例:** ```ts import { UIAbility, AbilityLifecycleCallback } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; let lifecycleId: number; export default class EntryAbility extends UIAbility { onCreate() { console.log('MyAbility onCreate'); let AbilityLifecycleCallback: AbilityLifecycleCallback = { onAbilityCreate(ability) { console.log(`AbilityLifecycleCallback onAbilityCreate ability: ${ability}`); }, onWindowStageCreate(ability, windowStage) { console.log(`AbilityLifecycleCallback onWindowStageCreate ability: ${ability}`); console.log(`AbilityLifecycleCallback onWindowStageCreate windowStage: ${windowStage}`); }, onWindowStageActive(ability, windowStage) { console.log(`AbilityLifecycleCallback onWindowStageActive ability: ${ability}`); console.log(`AbilityLifecycleCallback onWindowStageActive windowStage: ${windowStage}`); }, onWindowStageInactive(ability, windowStage) { console.log(`AbilityLifecycleCallback onWindowStageInactive ability: ${ability}`); console.log(`AbilityLifecycleCallback onWindowStageInactive windowStage: ${windowStage}`); }, onWindowStageDestroy(ability, windowStage) { console.log(`AbilityLifecycleCallback onWindowStageDestroy ability: ${ability}`); console.log(`AbilityLifecycleCallback onWindowStageDestroy windowStage: ${windowStage}`); }, onAbilityDestroy(ability) { console.log(`AbilityLifecycleCallback onAbilityDestroy ability: ${ability}`); }, onAbilityForeground(ability) { console.log(`AbilityLifecycleCallback onAbilityForeground ability: ${ability}`); }, onAbilityBackground(ability) { console.log(`AbilityLifecycleCallback onAbilityBackground ability: ${ability}`); }, onAbilityContinue(ability) { console.log(`AbilityLifecycleCallback onAbilityContinue ability: ${ability}`); } } // 1.通过context属性获取applicationContext let applicationContext = this.context.getApplicationContext(); try { // 2.通过applicationContext注册监听应用内生命周期 lifecycleId = applicationContext.on('abilityLifecycle', AbilityLifecycleCallback); } catch (paramError) { console.error(`error: ${(paramError as BusinessError).code}, ${(paramError as BusinessError).message}`); } console.log(`registerAbilityLifecycleCallback lifecycleId: ${lifecycleId}`); } } ``` ## ApplicationContext.off('abilityLifecycle') off(type: 'abilityLifecycle', callbackId: number, callback: AsyncCallback\): void 取消监听应用内UIAbility的生命周期。使用callback异步回调。仅支持主线程调用。 **原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------------- | -------- | ---- | -------------------------- | | type | 'abilityLifecycle' | 是 | 此类型表示应用内UIAbility的生命周期。 | | callbackId | number | 是 | 通过[ApplicationContext.on('abilityLifecycle')](#applicationcontextonabilitylifecycle)接口注册监听应用内UIAbility的生命周期时返回的ID。 | | callback | AsyncCallback\ | 是 | 回调方法。当取消监听应用内生命周期成功,err为undefined,否则为错误对象。 | **错误码**: 以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。 | 错误码ID | 错误信息 | | ------- | -------- | | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. | **示例:** ```ts import { UIAbility } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; let lifecycleId: number; export default class EntryAbility extends UIAbility { onDestroy() { let applicationContext = this.context.getApplicationContext(); console.log(`stage applicationContext: ${applicationContext}`); try { applicationContext.off('abilityLifecycle', lifecycleId, (error, data) => { if (error) { console.error(`unregisterAbilityLifecycleCallback fail, err: ${JSON.stringify(error)}`); } else { console.log(`unregisterAbilityLifecycleCallback success, data: ${JSON.stringify(data)}`); } }); } catch (paramError) { console.error(`error: ${(paramError as BusinessError).code}, ${(paramError as BusinessError).message}`); } } } ``` ## ApplicationContext.off('abilityLifecycle') off(type: 'abilityLifecycle', callbackId: number): Promise\ 取消监听应用内UIAbility的生命周期。使用Promise异步回调。仅支持主线程调用。 **原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------------- | -------- | ---- | -------------------------- | | type | 'abilityLifecycle' | 是 | 此类型表示应用内UIAbility的生命周期。 | | callbackId | number | 是 | 通过[ApplicationContext.on('abilityLifecycle')](#applicationcontextonabilitylifecycle)接口注册监听应用内UIAbility的生命周期时返回的ID。 | **返回值:** | 类型 | 说明 | | -------- | -------- | | Promise\ | 无返回结果的Promise对象。 | **错误码**: 以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。 | 错误码ID | 错误信息 | | ------- | -------- | | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. | **示例:** ```ts import { UIAbility } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; let lifecycleId: number; export default class MyAbility extends UIAbility { onDestroy() { let applicationContext = this.context.getApplicationContext(); console.log(`stage applicationContext: ${applicationContext}`); try { applicationContext.off('abilityLifecycle', lifecycleId); } catch (paramError) { console.error(`error: ${(paramError as BusinessError).code}, ${(paramError as BusinessError).message}`); } } } ``` ## ApplicationContext.on('environment') on(type: 'environment', callback: EnvironmentCallback): number 注册对系统环境变化的监听。使用callback异步回调。仅支持主线程调用。 > **说明:** > > 使用[onConfigurationUpdate](../apis-ability-kit/js-apis-app-ability-ability.md#abilityonconfigurationupdate)也可以实现对系统环境变量的监听。相较于Ability的[onConfigurationUpdate](../apis-ability-kit/js-apis-app-ability-ability.md#abilityonconfigurationupdate)接口,当前接口的使用场景更加灵活,不仅可以在应用组件中使用,还可以在页面中使用,但是支持订阅的环境变量与Ability的[onConfigurationUpdate](../apis-ability-kit/js-apis-app-ability-ability.md#abilityonconfigurationupdate)接口存在差异,如不支持订阅direction、screenDensity、displayId,详见[Configuration](../apis-ability-kit/js-apis-app-ability-configuration.md#configuration)中各个环境变量的说明。 **原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------------------------ | -------- | ---- | ------------------------------ | | type | 'environment' | 是 | 此类型表示系统环境变化,如系统深浅色发生变化。 | | callback | [EnvironmentCallback](js-apis-app-ability-environmentCallback.md) | 是 | 系统环境变化时触发的回调方法。 | **返回值:** | 类型 | 说明 | | ------ | ------------------------------------------------------------ | | number | 返回此次注册的callbackID,该ID用于在[ApplicationContext.off('environment')](#applicationcontextoffenvironment)方法中取消注册对应的callback。 | **错误码**: 以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。 | 错误码ID | 错误信息 | | ------- | -------- | | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. | **示例:** ```ts import { UIAbility, EnvironmentCallback } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; let callbackId: number; export default class EntryAbility extends UIAbility { onCreate() { console.log('MyAbility onCreate') let environmentCallback: EnvironmentCallback = { onConfigurationUpdated(config) { console.log(`onConfigurationUpdated config: ${JSON.stringify(config)}`); }, onMemoryLevel(level) { console.log(`onMemoryLevel level: ${level}`); } }; // 1.获取applicationContext let applicationContext = this.context.getApplicationContext(); try { // 2.通过applicationContext注册监听系统环境变化 callbackId = applicationContext.on('environment', environmentCallback); } catch (paramError) { console.error(`error: ${(paramError as BusinessError).code}, ${(paramError as BusinessError).message}`); } console.log(`registerEnvironmentCallback callbackId: ${callbackId}`); } } ``` ## ApplicationContext.off('environment') off(type: 'environment', callbackId: number, callback: AsyncCallback\): void 取消对系统环境变化的监听。使用callback异步回调。仅支持主线程调用。 **原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------------- | -------- | ---- | -------------------------- | | type | 'environment' | 是 | 此类型表示系统环境变化,如系统深浅色发生变化。 | | callbackId | number | 是 | 通过[ApplicationContext.on('environment')](#applicationcontextonenvironment)接口注册监听系统环境变化时返回的ID。 | | callback | AsyncCallback\ | 是 | 回调方法。当取消对系统环境变化的监听成功,err为undefined,否则为错误对象。 | **错误码**: 以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。 | 错误码ID | 错误信息 | | ------- | -------- | | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. | **示例:** ```ts import { UIAbility } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; let callbackId: number; export default class EntryAbility extends UIAbility { onDestroy() { let applicationContext = this.context.getApplicationContext(); try { applicationContext.off('environment', callbackId, (error, data) => { if (error) { console.error(`unregisterEnvironmentCallback fail, err: ${JSON.stringify(error)}`); } else { console.log(`unregisterEnvironmentCallback success, data: ${JSON.stringify(data)}`); } }); } catch (paramError) { console.error(`error: ${(paramError as BusinessError).code}, ${(paramError as BusinessError).message}`); } } } ``` ## ApplicationContext.off('environment') off(type: 'environment', callbackId: number): Promise\ 取消对系统环境变化的监听。使用Promise异步回调。仅支持主线程调用。 **原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------------- | -------- | ---- | -------------------------- | | type | 'environment' | 是 | 此类型表示系统环境变化,如系统深浅色发生变化。 | | callbackId | number | 是 | 通过[ApplicationContext.on('environment')](#applicationcontextonenvironment)接口注册监听系统环境变化时返回的ID。 | **返回值:** | 类型 | 说明 | | -------- | -------- | | Promise\ | 无返回结果的Promise对象。 | **错误码**: 以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。 | 错误码ID | 错误信息 | | ------- | -------- | | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. | **示例:** ```ts import { UIAbility } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; let callbackId: number; export default class MyAbility extends UIAbility { onDestroy() { let applicationContext = this.context.getApplicationContext(); try { applicationContext.off('environment', callbackId); } catch (paramError) { console.error(`error: ${(paramError as BusinessError).code}, ${(paramError as BusinessError).message}`); } } } ``` ## ApplicationContext.on('applicationStateChange')10+ on(type: 'applicationStateChange', callback: ApplicationStateChangeCallback): void 注册对当前应用进程状态变化的监听。使用callback异步回调。仅支持主线程调用。 **原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------------------------------------------------------ | ---- | ---------------- | | type | 'applicationStateChange' | 是 | 此类型表示当前应用进程状态变化。 | | callback | [ApplicationStateChangeCallback](js-apis-app-ability-applicationStateChangeCallback.md) | 是 | 当前应用进程状态切换时触发的回调方法。 | **错误码**: 以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。 | 错误码ID | 错误信息 | | ------- | -------- | | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. | **示例:** ```ts import { UIAbility, ApplicationStateChangeCallback } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; export default class MyAbility extends UIAbility { onCreate() { console.log('MyAbility onCreate'); let applicationStateChangeCallback: ApplicationStateChangeCallback = { onApplicationForeground() { console.info('applicationStateChangeCallback onApplicationForeground'); }, onApplicationBackground() { console.info('applicationStateChangeCallback onApplicationBackground'); } } // 1.获取applicationContext let applicationContext = this.context.getApplicationContext(); try { // 2.通过applicationContext注册当前应用进程状态监听 applicationContext.on('applicationStateChange', applicationStateChangeCallback); } catch (paramError) { console.error(`error: ${(paramError as BusinessError).code}, ${(paramError as BusinessError).message}`); } console.log('Register applicationStateChangeCallback'); } } ``` ## ApplicationContext.off('applicationStateChange')10+ off(type: 'applicationStateChange', callback?: ApplicationStateChangeCallback): void 取消对当前应用进程状态变化的监听。使用callback异步回调。仅支持主线程调用。 **原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------ | ------------- | ---- | -------------------- | | type | 'applicationStateChange' | 是 | 此类型表示当前应用进程状态变化。 | | callback | [ApplicationStateChangeCallback](js-apis-app-ability-applicationStateChangeCallback.md) | 否 | 回调函数。取值可以为使用[ApplicationContext.on('applicationStateChange')](#applicationcontextonapplicationstatechange10)方法定义的callback回调,也可以为空。
- 如果传入已定义的回调,则取消该监听。
- 如果未传入参数,则取消所有已注册的该类型事件的监听。 | **错误码**: 以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。 | 错误码ID | 错误信息 | | ------- | -------- | | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. | **示例:** 假定已使用[ApplicationContext.on('applicationStateChange')](#applicationcontextonapplicationstatechange10)方法注册名为applicationStateChangeCallback回调,下面示例展示如何取消对应的事件监听。 ```ts import { UIAbility, ApplicationStateChangeCallback } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; let applicationStateChangeCallback: ApplicationStateChangeCallback = { onApplicationForeground() { console.info('applicationStateChangeCallback onApplicationForeground'); }, onApplicationBackground() { console.info('applicationStateChangeCallback onApplicationBackground'); } }; export default class MyAbility extends UIAbility { onDestroy() { let applicationContext = this.context.getApplicationContext(); try { // 本例中的callback字段取值为ApplicationStateChangeCallback,需要替换为实际值。 // 如果callback字段不传入参数,则取消所有已注册的该类型事件的监听。 applicationContext.off('applicationStateChange', applicationStateChangeCallback); } catch (paramError) { console.error(`error: ${(paramError as BusinessError).code}, ${(paramError as BusinessError).message}`); } } } ``` ## ApplicationContext.getRunningProcessInformation getRunningProcessInformation(): Promise\> 获取运行中的进程信息。使用Promise异步回调。 **原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core **返回值:** | 类型 | 说明 | | -------- | -------- | | Promise\> | Promise对象,返回接口运行结果及有关运行进程的信息,可进行错误处理或其他自定义处理。 | **错误码**: 以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。 | 错误码ID | 错误信息 | | ------- | -------- | | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. | | 16000011 | The context does not exist. | | 16000050 | Internal error. | **示例:** ```ts import { UIAbility } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; export default class MyAbility extends UIAbility { onForeground() { let applicationContext = this.context.getApplicationContext(); applicationContext.getRunningProcessInformation().then((data) => { console.log(`The process running information is: ${JSON.stringify(data)}`); }).catch((error: BusinessError) => { console.error(`error: ${JSON.stringify(error)}`); }); } } ``` ## ApplicationContext.getRunningProcessInformation getRunningProcessInformation(callback: AsyncCallback\>): void 获取运行中的进程信息。使用callback异步回调。 **原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------------- | -------- | ---- | -------------------------- | | callback | AsyncCallback\> | 是 | 回调函数,返回有关运行进程的信息。 | **错误码**: 以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。 | 错误码ID | 错误信息 | | ------- | -------- | | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. | | 16000011 | The context does not exist. | | 16000050 | Internal error. | **示例:** ```ts import { UIAbility } from '@kit.AbilityKit'; export default class MyAbility extends UIAbility { onForeground() { let applicationContext = this.context.getApplicationContext(); applicationContext.getRunningProcessInformation((err, data) => { if (err) { console.error(`getRunningProcessInformation failed, err: ${JSON.stringify(err)}`); } else { console.log(`The process running information is: ${JSON.stringify(data)}`); } }) } } ``` ## ApplicationContext.killAllProcesses killAllProcesses(): Promise\ 终止应用的所有进程,进程退出时不会正常执行完整的应用生命周期流程。使用Promise异步回调。仅支持主线程调用。 > **说明:** > > 该接口用于应用异常场景中强制退出应用。如需正常退出应用,可以使用[terminateSelf()](js-apis-inner-application-uiAbilityContext.md#terminateself-1)接口。 **原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core **返回值:** | 类型 | 说明 | | -------- | -------- | | Promise\ | 无返回结果的Promise对象。 | **错误码**: 以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。 | 错误码ID | 错误信息 | | ------- | -------- | | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. | | 16000011 | The context does not exist. | **示例:** ```ts import { UIAbility } from '@kit.AbilityKit'; export default class MyAbility extends UIAbility { onBackground() { let applicationContext = this.context.getApplicationContext(); applicationContext.killAllProcesses(); } } ``` ## ApplicationContext.killAllProcesses14+ killAllProcesses(clearPageStack: boolean): Promise\ 终止应用的所有进程,进程退出时不会正常执行完整的应用生命周期流程。使用Promise异步回调。仅支持主线程调用。 > **说明:** > > 该接口用于应用异常场景中强制退出应用。如需正常退出应用,可以使用[terminateSelf()](js-apis-inner-application-uiAbilityContext.md#terminateself-1)接口。 **原子化服务API**:从API version 14开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | | clearPageStack | boolean | 是 | 表示是否清除页面堆栈。true表示清除,false表示不清除。 | **返回值:** | 类型 | 说明 | | -------- | -------- | | Promise\ | 无返回结果的Promise对象。 | **错误码**: 以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。 | 错误码ID | 错误信息 | | ------- | -------- | | 401 | If the input parameter is not valid parameter. | | 16000011 | The context does not exist. | **示例:** ```ts import { UIAbility } from '@kit.AbilityKit'; let isClearPageStack = false; export default class MyAbility extends UIAbility { onBackground() { let applicationContext = this.context.getApplicationContext(); applicationContext.killAllProcesses(isClearPageStack); } } ``` ## ApplicationContext.killAllProcesses killAllProcesses(callback: AsyncCallback\) 终止应用的所有进程,进程退出时不会正常执行完整的应用生命周期流程。使用callback异步回调。仅支持主线程调用。 > **说明:** > > 该接口用于应用异常场景中强制退出应用。如需正常退出应用,可以使用[terminateSelf()](js-apis-inner-application-uiAbilityContext.md#terminateself-1)接口。 **原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------------- | -------- | ---- | -------------------------- | | callback | AsyncCallback\ | 是 | 回调函数。当终止应用所在的进程成功,err为undefined,否则为错误对象。 | **错误码**: 以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。 | 错误码ID | 错误信息 | | ------- | -------- | | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. | | 16000011 | The context does not exist. | **示例:** ```ts import { UIAbility } from '@kit.AbilityKit'; export default class MyAbility extends UIAbility { onBackground() { let applicationContext = this.context.getApplicationContext(); applicationContext.killAllProcesses(error => { if (error) { console.error(`killAllProcesses fail, error: ${JSON.stringify(error)}`); } }); } } ``` ## ApplicationContext.setColorMode11+ setColorMode(colorMode: ConfigurationConstant.ColorMode): void 设置应用的深浅色模式。仅支持主线程调用。 > **说明:** > > 调用该接口前,需要确保窗口已完成创建、且UIAbility对应的页面已完成加载,即在[onWindowStageCreate()](js-apis-app-ability-uiAbility.md#onwindowstagecreate)生命周期中通过[loadContent](../apis-arkui/arkts-apis-window-WindowStage.md#loadcontent9)方法加载页面之后调用。 **原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------ | ------------- | ---- | -------------------- | | colorMode | [ConfigurationConstant.ColorMode](js-apis-app-ability-configurationConstant.md#colormode) | 是 | 深浅色模式,包括:深色模式、浅色模式、跟随系统模式(默认)。 | **错误码**: 以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。 | 错误码ID | 错误信息 | | ------- | -------- | | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. | | 16000011 | The context does not exist. | **示例:** ```ts import { UIAbility, ConfigurationConstant } from '@kit.AbilityKit'; import { window } from '@kit.ArkUI'; export default class MyAbility extends UIAbility { onWindowStageCreate(windowStage: window.WindowStage) { console.info("Ability onWindowStageCreate"); windowStage.loadContent('pages/Index', (err, data) => { if (err.code) { console.error(`Failed to load the content. Code: ${err.code}, message: ${err.message}`); return; } console.info(`Succeeded in loading the content. Data: ${JSON.stringify(data)}`); }); let applicationContext = this.context.getApplicationContext(); applicationContext.setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_DARK); } } ``` ## ApplicationContext.setLanguage11+ setLanguage(language: string): void 设置应用的语言。仅支持主线程调用。 > **说明:** > > 调用该接口前,需要确保窗口已完成创建、且UIAbility对应的页面已完成加载,即在[onWindowStageCreate()](js-apis-app-ability-uiAbility.md#onwindowstagecreate)生命周期中通过[loadContent](../apis-arkui/arkts-apis-window-WindowStage.md#loadcontent9)方法加载页面之后调用。 **原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------ | ------------- | ---- | -------------------- | | language | string | 是 | 设置语言,当前支持的语言列表可以通过[getSystemLanguages()](../apis-localization-kit/js-apis-i18n.md#getsystemlanguages9)获取。 | **错误码**: 以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。 | 错误码ID | 错误信息 | | ------- | -------- | | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. | | 16000011 | The context does not exist. | **示例:** ```ts import { UIAbility } from '@kit.AbilityKit'; import { window } from '@kit.ArkUI'; export default class MyAbility extends UIAbility { onWindowStageCreate(windowStage: window.WindowStage) { console.info("Ability onWindowStageCreate"); windowStage.loadContent('pages/Index', (err, data) => { if (err.code) { console.error(`Failed to load the content. Code: ${err.code}, message: ${err.message}`); return; } console.info(`Succeeded in loading the content. Data: ${JSON.stringify(data)}`); }); let applicationContext = this.context.getApplicationContext(); applicationContext.setLanguage('zh-cn'); } } ``` ## ApplicationContext.clearUpApplicationData11+ clearUpApplicationData(): Promise\ 清理当前应用的数据,同时撤销应用向用户申请的权限。使用Promise异步回调。仅支持主线程调用。 > **说明:** > > 该接口会停止应用进程,应用进程停止后,后续的所有回调都不会再触发。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core **返回值:** | 类型 | 说明 | | -------- | -------- | | Promise\ | 无返回结果的Promise对象。 | **错误码**: 以下错误码详细介绍请参考[元能力子系统错误码](errorcode-ability.md)。 | 错误码ID | 错误信息 | | ------- | -------- | | 16000011 | The context does not exist. | | 16000050 | Internal error. | **示例:** ```ts import { UIAbility } from '@kit.AbilityKit'; export default class MyAbility extends UIAbility { onBackground() { let applicationContext = this.context.getApplicationContext(); applicationContext.clearUpApplicationData(); } } ``` ## ApplicationContext.clearUpApplicationData11+ clearUpApplicationData(callback: AsyncCallback\): void 清理当前应用的数据,同时撤销应用向用户申请的权限。使用callback异步回调。仅支持主线程调用。 > **说明:** > > 该接口会停止应用进程,应用进程停止后,后续的所有回调都不会再触发。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------------- | -------- | ---- | -------------------------- | | callback | AsyncCallback\ | 是 | 回调方法。清理应用本身的数据成功时,error为undefined,否则返回错误对象。 | **错误码**: 以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。 | 错误码ID | 错误信息 | | ------- | -------- | | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. | | 16000011 | The context does not exist. | | 16000050 | Internal error. | **示例:** ```ts import { UIAbility } from '@kit.AbilityKit'; export default class MyAbility extends UIAbility { onBackground() { let applicationContext = this.context.getApplicationContext(); applicationContext.clearUpApplicationData(error => { if (error) { console.error(`clearUpApplicationData fail, error: ${JSON.stringify(error)}`); } }); } } ``` ## ApplicationContext.restartApp12+ restartApp(want: Want): void 应用重启并拉起自身指定UIAbility。重启时不会收到onDestroy回调。仅支持主线程调用,且待重启的应用需要处于获焦状态。 **原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------------- | -------- | ---- | -------------------------- | | want | [Want](js-apis-app-ability-want.md) | 是 | Want类型参数,传入需要启动的UIAbility的信息,Bundle名称不做校验。 | **错误码**: 以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。 | 错误码ID | 错误信息 | | ------- | -------- | | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. | | 16000050 | Internal error. | | 16000053 | The ability is not on the top of the UI. | | 16000063 | The target to restart does not belong to the current application or is not a UIAbility. | | 16000064 | Restart too frequently. Try again at least 3s later. | **示例:** ```ts import { UIAbility, Want } from '@kit.AbilityKit'; export default class MyAbility extends UIAbility { onForeground() { let applicationContext = this.context.getApplicationContext(); let want: Want = { bundleName: 'com.example.myapp', abilityName: 'EntryAbility' }; try { applicationContext.restartApp(want); } catch (error) { console.error(`restartApp fail, error: ${JSON.stringify(error)}`); } } } ``` ## ApplicationContext.getCurrentAppCloneIndex12+ getCurrentAppCloneIndex(): number 获取当前应用的分身索引。 **原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core **返回值:** | 类型 | 说明 | | -------- | -------- | | number | 当前应用的分身索引。 | **错误码**: | 错误码ID | 错误信息 | | ------- | -------- | | 16000011 | The context does not exist. | | 16000071 | App clone is not supported. | 以上错误码详细介绍请参考[元能力子系统错误码](errorcode-ability.md)。 **示例:** ```ts import { UIAbility } from '@kit.AbilityKit'; export default class MyAbility extends UIAbility { onBackground() { let applicationContext = this.context.getApplicationContext(); try { let appCloneIndex = applicationContext.getCurrentAppCloneIndex(); } catch (error) { console.error(`getCurrentAppCloneIndex fail, error: ${JSON.stringify(error)}`); } } } ``` ## ApplicationContext.setFont12+ setFont(font: string): void 设置应用的字体类型。仅支持主线程调用。 > **说明:** > > 调用该接口前,需要确保窗口已完成创建、且UIAbility对应的页面已完成加载,即在[onWindowStageCreate()](js-apis-app-ability-uiAbility.md#onwindowstagecreate)生命周期中通过[loadContent](../apis-arkui/arkts-apis-window-WindowStage.md#loadcontent9)方法加载页面之后调用。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------ | ------------- | ---- | -------------------- | | font | string | 是 | 设置字体类型,字体可以通过[UIContext.registerFont](../apis-arkui/arkts-apis-uicontext-font.md#registerfont)方法进行注册使用。 | **错误码**: 以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。 | 错误码ID | 错误信息 | | ------- | -------- | | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. | | 16000011 | The context does not exist. | | 16000050 | Internal error. | **示例:** ```ts import { common } from '@kit.AbilityKit'; @Entry @Component struct Index { @State message: string = 'Hello World'; context = this.getUIContext().getHostContext() as common.UIAbilityContext; aboutToAppear() { this.getUIContext().getFont().registerFont({ familyName: 'fontName', familySrc: $rawfile('font/medium.ttf') // 'font/medium.ttf'仅作为示例,实际使用时请替换为真实的字体资源文件。 }); this.context.getApplicationContext().setFont('fontName'); } build() { Row() { Column() { Text(this.message) .fontSize(50) .fontWeight(50) } .width('100%') } .height('100%') } } ``` ## ApplicationContext.setSupportedProcessCache12+ setSupportedProcessCache(isSupported : boolean): void 设置当前应用进程是否支持进程资源的缓存,便于应用再次启动时复用缓存的进程资源。仅支持主线程调用。 该接口仅对单个进程实例生效,不同进程实例互不影响。应用进程实例销毁后,已设置的状态不保留,需要重新设置。 > **说明:** > - 该接口仅表示应用自身是否为缓存后快速启动做好了准备,还需综合其他条件来判断最终是否为应用启用快速启动。 > - 为了确保该接口在进程退出前生效,调用时机应尽量提前。建议在[AbilityStage](../../reference/apis-ability-kit/js-apis-app-ability-abilityStage.md)的`onCreate()`中调用该接口。 > - 在同一进程多次调用该接口时,会以最后一次调用的结果为准。当存在多个AbilityStage时,为了确保结果符合预期,需要在各个AbilityStage中分别调用该接口并配置相同的取值。 **模型约束**:此接口仅可在Stage模型下使用。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core **设备行为差异**:该接口仅在Phone和2in1设备中可正常调用,在其他设备中返回801错误码。 **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------------- | -------- | ---- | -------------------------- | | isSupported | boolean | 是 | 表示应用是否支持进程资源的缓存。true表示支持,false表示不支持。 | **错误码**: 以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)、[元能力子系统错误码](errorcode-ability.md)。 | 错误码ID | 错误信息 | | ------- | -------- | | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. | | 801 | Capability not supported.| | 16000011 | The context does not exist. | | 16000050 | Internal error. | **示例:** ```ts import { AbilityStage, Want } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; class MyAbilityStage extends AbilityStage { onCreate() { let applicationContext = this.context.getApplicationContext(); try { applicationContext.setSupportedProcessCache(true); } catch (error) { let code = (error as BusinessError).code; let message = (error as BusinessError).message; console.error(`setSupportedProcessCache fail, code: ${code}, msg: ${message}`); } } } ``` ## ApplicationContext.setFontSizeScale13+ setFontSizeScale(fontSizeScale: number): void 设置应用字体大小缩放比例。仅支持主线程调用。 **原子化服务API**:从API version 13开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------ | ------------- | ---- | -------------------- | | 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标签)取值。| **错误码**: 以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。 | 错误码ID | 错误信息 | | ------- | -------- | | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. | **示例:** ```ts import { UIAbility } from '@kit.AbilityKit'; import { window } from '@kit.ArkUI'; export default class MyAbility extends UIAbility { onWindowStageCreate(windowStage: window.WindowStage) { windowStage.loadContent('pages/Index', (err, data) => { if (err.code) { return; } let applicationContext = this.context.getApplicationContext(); applicationContext.setFontSizeScale(2); }); } } ``` ## ApplicationContext.getCurrentInstanceKey14+ getCurrentInstanceKey(): string 获取当前应用多实例的唯一实例标识。仅支持主线程调用。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core **设备行为差异**:该接口仅在2in1设备中可正常调用,在其他设备中返回16000078错误码。 **返回值:** | 类型 | 说明 | | ------ | ------------------------------ | | string | 返回当前应用多实例的唯一实例标识。| **错误码**: 以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。 | 错误码ID | 错误信息 | | ------- | -------- | | 16000011 | The context does not exist. | | 16000078 | The multi-instance is not supported. | **示例:** ```ts import { AbilityStage } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; class MyAbilityStage extends AbilityStage { onCreate() { let applicationContext = this.context.getApplicationContext(); let currentInstanceKey = ''; try { currentInstanceKey = applicationContext.getCurrentInstanceKey(); } catch (error) { let code = (error as BusinessError).code; let message = (error as BusinessError).message; console.error(`getCurrentInstanceKey fail, code: ${code}, msg: ${message}`); } console.log(`currentInstanceKey: ${currentInstanceKey}`); } } ``` ## ApplicationContext.getAllRunningInstanceKeys14+ getAllRunningInstanceKeys(): Promise\>; 获取应用的所有多实例的唯一实例标识。使用Promise异步回调。仅支持主线程调用。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core **返回值:** | 类型 | 说明 | | ------ | ------------------------------ | | Promise\> | Promise对象,返回应用的所有多实例的唯一实例标识。| **错误码**: 以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。 | 错误码ID | 错误信息 | | ------- | -------- | | 16000011 | The context does not exist. | | 16000050 | Internal error. | | 16000078 | The multi-instance is not supported. | **示例:** ```ts import { AbilityStage } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; class MyAbilityStage extends AbilityStage { onCreate() { let applicationContext = this.context.getApplicationContext(); try { applicationContext.getAllRunningInstanceKeys(); } catch (error) { let code = (error as BusinessError).code; let message = (error as BusinessError).message; console.error(`getAllRunningInstanceKeys fail, code: ${code}, msg: ${message}`); } } } ```