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

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

HarmonyOS
5天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
p3586

使用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
微信
回复
5天前
相关问题
etcdctl v3 环境变量
1100浏览 • 1回复 待解决
如何将Node.js配置到环境变量中去?
11浏览 • 0回复 待解决
如何监听Viewmodel里变量变化
732浏览 • 1回复 待解决
用户订阅系统公共事件
514浏览 • 1回复 待解决
如何监听窗口大小变化
851浏览 • 1回复 待解决
鸿蒙如何实现动画值变化
8119浏览 • 1回复 待解决
如何获取设备横竖屏状态变化通知
690浏览 • 1回复 待解决