@ohos.app.ability.Ability (Ability基类)
export default class Ability {
onConfigurationUpdate(newConfig: Configuration): void;
onMemoryLevel(level: AbilityConstant.MemoryLevel): void;
}
Ability.onConfigurationUpdate
系统环境变化通知
,包括全局配置的变化和Ability配置的变化。
名称 | 类型 | 可读 | 可写 | 说明 |
---|---|---|---|---|
language | string | 是 | 是 | 表示应用程序的当前语言。例如:zh。 |
colorMode | ColorMode | 是 | 是 | 表示深浅色模式,取值范围:未设置(COLOR_MODE_NOT_SET),浅色模式(COLOR_MODE_LIGHT),深色模式(COLOR_MODE_DARK)。默认为浅色。 |
direction | Direction | 是 | 否 | 表示屏幕方向,取值范围:未设置(DIRECTION_NOT_SET),水平方向(DIRECTION_HORIZONTAL),垂直方向(DIRECTION_VERTICAL)。 |
screenDensity | ScreenDensity | 是 | 否 | 表示屏幕像素密度,取值范围:未设置(SCREEN_DENSITY_NOT_SET),SCREEN_DENSITY_SDPI(120)、SCREEN_DENSITY_MDPI(160)、SCREEN_DENSITY_LDPI(240)、SCREEN_DENSITY_XLDPI(320)、SCREEN_DENSITY_XXLDPI(480)、SCREEN_DENSITY_XXXLDPI(640)。 |
displayId | number | 是 | 否 | 表示应用所在的物理屏幕Id。 |
hasPointerDevice | boolean | 是 | 否 | 指示指针类型设备是否已连接,如键鼠、触控板等。 |
全局配置
全局配置
指全局的、系统的配置,目前包括“语言”和“颜色模式”,全局配置的变化一般由“设置”中的配置项或“控制中心”中的图标触发。
(1)language
(语言变化)
(2)colorMode
(颜色模式)
名称 | 值 | 说明 |
---|---|---|
COLOR_MODE_NOT_SET | -1 | 未设置颜色模式。 |
COLOR_MODE_DARK | 0 | 深色模式。 |
COLOR_MODE_LIGHT | 1 | 浅色模式。 |
(3)hasPointerDevice
(设备是否已连接)
export default class MainAbility extends AbilityStage {
language : string;
onCreate(want, launchParam) {
let config = this.context.config
//获取当前语言
this.language = config.language
}
onConfigurationUpdated(config) {
//颜色模式发生变化
if (config.colorMode === ConfigurationConstant.ColorMode.COLOR_MODE_DARK) {
console.log('colorMode changed to dark')
}
//系统语言发生变化
if (config.language !== this.language) {
if(config.language ==="zh-CN"){
console.log('language changed to zh-CN')
}
}
//设备已连接
if (config.hasPointerDevice){
console.log(`hasPointerDevice : ${config.hasPointerDevice} `)
}
}
}
Ability配置
Ability配置
指与单个Ability实例相关的配置,这些配置与Ability所在的Display有关,Ability配置的变化一般由窗口触发。(gitee.com/openharmony…
(1)displayId
(物理屏幕Id)
(2)screenDensity
(屏幕分辨率)
名称 | 值 | 说明 |
---|---|---|
SCREEN_DENSITY_NOT_SET | 0 | 未设置屏幕像素密度。 |
SCREEN_DENSITY_SDPI | 120 | 屏幕像素密度为'sdpi'。 |
SCREEN_DENSITY_MDPI | 160 | 屏幕像素密度为'mdpi'。 |
SCREEN_DENSITY_LDPI | 240 | 屏幕像素密度为'ldpi'。 |
SCREEN_DENSITY_XLDPI | 320 | 屏幕像素密度为'xldpi'。 |
SCREEN_DENSITY_XXLDPI | 480 | 屏幕像素密度为'xxldpi'。 |
SCREEN_DENSITY_XXXLDPI | 640 | 屏幕像素密度为'xxxldpi'。 |
(3)direction
(横竖屏)
名称 | 值 | 说明 |
---|---|---|
DIRECTION_NOT_SET | -1 | 未设置方向。 |
DIRECTION_VERTICAL | 0 | 垂直方向。 |
DIRECTION_HORIZONTAL | 1 | 水平方向。 |
export default class MainAbility extends Ability {
displayId : number;
direction : ConfigurationConstant.Direction;
screenDensity : ConfigurationConstant.ScreenDensity;
onCreate(want, launchParam) {
let config = this.context.config
//获取当前物理屏幕Id
this.displayId = config.displayId
//获取当前横竖屏状态
this.direction = config.direction
//获取当前屏幕分辨率
this.screenDensity = config.screenDensity
}
onConfigurationUpdated(config) {
//横竖屏发生变化
if (config.direction !== this.direction) {
console.log(`direction changed to ${config.direction}`)
//变为水平方向
if (config.direction === ConfigurationConstant.Direction.DIRECTION_VERTICAL){
console.log(`direction changed to vertical`)
}
}
//物理屏幕Id发生变化
if (config.displayId !== this.displayId) {
console.log(`displayId changed to ${config.displayId}`)
}
//屏幕分辨率发生变化
if (config.screenDensity !== this.screenDensity) {
console.log(`screenDensity changed to ${config.screenDensity}`)
}
}
}
Ability.onMemoryLevel
当系统已决定调整内存时
调用。例如,当该功能在后台运行时,没有足够的内存来运行尽可能多的后台进程时可以使用。
名称 | 值 | 说明 |
---|---|---|
MEMORY_LEVEL_MODERATE | 0 | 内存占用适中。 |
MEMORY_LEVEL_LOW | 1 | 内存占用低。 |
MEMORY_LEVEL_CRITICAL | 2 | 内存占用高。 |
class MainAbility extends Ability {
onMemoryLevel(level) {
console.log('onMemoryLevel, level:' + JSON.stringify(level));
}
}