1# @ohos.app.ability.Ability (Ability基类) 2 3<!--Kit: Ability Kit--> 4<!--Subsystem: Ability--> 5<!--Owner: @littlejerry1--> 6<!--Designer: @ccllee1--> 7<!--Tester: @lixueqing513--> 8<!--Adviser: @huipeizi--> 9 10Ability类是应用生命周期调度的基本单元,是[UIAbility](js-apis-app-ability-uiAbility.md)和[ExtensionAbility](js-apis-app-ability-extensionAbility.md)的基类,提供系统配置更新回调和系统内存级别变化回调能力。该基类不支持开发者直接继承,开发者应根据具体的业务场景选择使用[UIAbility](js-apis-app-ability-uiAbility.md)或[ExtensionAbility](js-apis-app-ability-extensionAbility.md),相关指南参见[Ability Kit简介](../../application-models/abilitykit-overview.md)。 11 12> **说明:** 13> 14> 本模块首批接口从API version 9 开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 15> 16> 本模块接口仅可在Stage模型下使用。 17 18## 导入模块 19 20```ts 21import { Ability } from '@kit.AbilityKit'; 22``` 23 24## Ability的继承关系说明 25 26Ability基类及其子类的继承关系如下图所示。 27 28> **说明:** 29> 30> 部分ExtensionAbility组件(例如[FormExtensionAbility](../apis-form-kit/js-apis-app-form-formExtensionAbility.md)、[InputMethodExtensionAbility](../apis-ime-kit/js-apis-inputmethod-extension-ability.md)等)与下图中的ExtensionAbility基类不存在继承关系,均未在图中列出。 31 32 33 34## Ability.onConfigurationUpdate 35 36onConfigurationUpdate(newConfig: Configuration): void 37 38当系统环境变量发生变化时,系统会触发该回调。开发者可以重写该回调实现对系统环境变量变化时的响应,例如当系统语言类型发生变化时,应用可以在回调中进行定制化的处理等。 39 40> **说明:** 41> 42> 该回调方法在实际触发时存在一定限制。如果开发者通过[setLanguage](../apis-ability-kit/js-apis-inner-application-applicationContext.md#applicationcontextsetlanguage11)接口设置应用的语言,即便系统语言发生变化,系统也不再触发onConfigurationUpdate回调。详见[使用场景](../../application-models/subscribe-system-environment-variable-changes.md#使用场景)。 43 44**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 45 46**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore 47 48**参数:** 49 50| 参数名 | 类型 | 必填 | 说明 | 51| -------- | -------- | -------- | -------- | 52| newConfig | [Configuration](js-apis-app-ability-configuration.md) | 是 | 表示更新后的配置信息。 | 53 54**示例:** 55 56```ts 57// Ability是顶层基类,不支持开发者直接继承。故以派生类UIAbility举例说明。 58import { UIAbility, Configuration } from '@kit.AbilityKit'; 59 60class MyUIAbility extends UIAbility { 61 onConfigurationUpdate(config: Configuration) { 62 console.log(`onConfigurationUpdate, config: ${JSON.stringify(config)}`); 63 } 64} 65``` 66 67## Ability.onMemoryLevel 68 69onMemoryLevel(level: AbilityConstant.MemoryLevel): void 70 71当整机可用内存变化到指定程度时,系统会触发该回调。开发者可以重写该回调实现对内存级别变化的响应,例如释放缓存数据等。 72 73**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 74 75**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore 76 77**参数:** 78 79| 参数名 | 类型 | 必填 | 说明 | 80| -------- | -------- | -------- | -------- | 81| level | [AbilityConstant.MemoryLevel](js-apis-app-ability-abilityConstant.md#memorylevel) | 是 | 整机可用内存变化到的级别。<br>**说明:**<br>不同产品的触发条件可能存在差异。以12G内存的标准设备为例:<br>- 当整机可用内存下降至1700M~1800M时,会触发MEMORY_LEVEL_MODERATE类型(整机可用内存适中)的onMemoryLevel回调。<br>- 当整机可用内存下降至1600M~1700M时,会触发MEMORY_LEVEL_LOW类型(整机可用内存低)的onMemoryLevel回调。<br>- 当整机可用内存下降至1600M以下时,会触发MEMORY_LEVEL_CRITICAL类型(整机可用内存极低)的onMemoryLevel回调。| 82 83**示例:** 84 85```ts 86// Ability是顶层基类,不支持开发者直接继承。故以派生类UIAbility举例说明。 87import { UIAbility, AbilityConstant } from '@kit.AbilityKit'; 88 89class MyUIAbility extends UIAbility { 90 onMemoryLevel(level: AbilityConstant.MemoryLevel) { 91 console.log(`onMemoryLevel, level: ${JSON.stringify(level)}`); 92 } 93} 94``` 95