# @ohos.app.ability.EnvironmentCallback (EnvironmentCallback) The **EnvironmentCallback** module provides APIs for the application context to listen for system environment changes. > **NOTE** > > The initial APIs of this module are supported since API version 9. Newly added APIs will be marked with a superscript to indicate their earliest API version. > > The APIs of this module can be used only in the stage model. ## Modules to Import ```ts import { EnvironmentCallback } from '@kit.AbilityKit'; ``` ## EnvironmentCallback.onConfigurationUpdated onConfigurationUpdated(config: Configuration): void Called when the system environment changes. **Atomic service API**: This API can be used in atomic services since API version 11. **System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | config | [Configuration](js-apis-app-ability-configuration.md) | Yes| **Configuration** object after the change.| **Example** See [Usage of EnvironmentCallback](#usage-of-environmentcallback). ## EnvironmentCallback.onMemoryLevel onMemoryLevel(level: AbilityConstant.MemoryLevel): void Called when the system memory level changes. **Atomic service API**: This API can be used in atomic services since API version 11. **System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | level | [AbilityConstant.MemoryLevel](js-apis-app-ability-abilityConstant.md#memorylevel) | Yes| Memory level that indicates the memory usage status. When the specified memory level is reached, a callback will be invoked and the system will start adjustment.| **Example** See [Usage of EnvironmentCallback](#usage-of-environmentcallback). ## Usage of EnvironmentCallback **Example** ```ts import { UIAbility, EnvironmentCallback } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; let callbackId: number; export default class MyAbility 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: ${JSON.stringify(level)}`); } }; // 1. Obtain an applicationContext object. let applicationContext = this.context.getApplicationContext(); try { // 2. Register a listener for the environment changes through the applicationContext object. callbackId = applicationContext.on('environment', environmentCallback); } catch (paramError) { console.error(`error: ${(paramError as BusinessError).code}, ${(paramError as BusinessError).message}`); } console.log(`registerEnvironmentCallback number: ${JSON.stringify(callbackId)}`); } onDestroy() { let applicationContext = this.context.getApplicationContext(); try { applicationContext.off('environment', callbackId, (error, data) => { if (error && error.code !== 0) { console.error(`unregisterEnvironmentCallback fail, error: ${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}`); } } } ```