如何订阅系统环境变量的变化

如何订阅系统环境变量的变化

HarmonyOS
2024-07-05 18:24:18
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
躺平嗑产品懒猫
1

使用ApplicationContext订阅回调

使用ApplicationContext.on(type: 'environment', callback: EnvironmentCallback)方法,应用程序可以通过在非应用组件模块中订阅系统环境变量的变化来动态响应这些变化。例如,使用该方法在页面中监测系统语言的变化。

示例代码

import common from '@ohos.app.ability.common';
import EnvironmentCallback from '@ohos.app.ability.EnvironmentCallback';
import { BusinessError } from '@ohos.base';
import hilog from '@ohos.hilog';
import { Configuration } from '@ohos.app.ability.Configuration';
const TAG: string = '[CollaborateAbility]';
const DOMAIN_NUMBER: number = 0xFF00;
@Entry
@Component
struct Index {
  private context = getContext(this) as common.UIAbilityContext;

注册订阅系统环境变化的ID

subscribeConfigurationUpdate(): void {

获取系统当前语言

获取ApplicationContext

let applicationContext = this.context.getApplicationContext();

通过applicationContext订阅环境变量变化

let environmentCallback: EnvironmentCallback = {
      onConfigurationUpdated(newConfig: Configuration) {
        hilog.info(DOMAIN_NUMBER, TAG, `onConfigurationUpdated systemLanguage is ${systemLanguage}, newConfig: ${JSON.stringify(newConfig)}`);
        if (this.systemLanguage !== newConfig.language) {
          hilog.info(DOMAIN_NUMBER, TAG, `systemLanguage from ${systemLanguage} changed to ${newConfig.language}`);

将变化之后的系统语言保存,作为下一次变化前的系统语言

}
      },
      onMemoryLevel(level) {
        hilog.info(DOMAIN_NUMBER, TAG, `onMemoryLevel level: ${level}`);
      }
    }
    try {
      this.callbackId = applicationContext.on('environment', environmentCallback);
    } catch (err) {
      let code = (err as BusinessError).code;
      let message = (err as BusinessError).message;
      hilog.error(DOMAIN_NUMBER, TAG, `Failed to register applicationContext. Code is ${code}, message is ${message}`);
    };
  }

页面展示

build() {
    //...
  }
}
分享
微博
QQ
微信
回复1
2024-07-06 11:13:35
相关问题
etcdctl v3 环境变量
1899浏览 • 1回复 待解决
如何将Node.js配置到环境变量中去?
140浏览 • 2回复 待解决
如何监听Viewmodel里变量变化
1594浏览 • 1回复 待解决
ArkTS中如何监听状态变量变化
319浏览 • 1回复 待解决
用户订阅系统公共事件
663浏览 • 1回复 待解决
如何监听window大小变化
146浏览 • 1回复 待解决
如何监听窗口大小变化
1610浏览 • 1回复 待解决