日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙開發(fā):訂閱系統(tǒng)環(huán)境變量的變化

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-06-11 21:56 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

訂閱系統(tǒng)環(huán)境變量的變化

系統(tǒng)環(huán)境變量是指:在應用程序運行期間,終端設備的系統(tǒng)設置(例如系統(tǒng)的語言環(huán)境、屏幕方向等)發(fā)生變化。

開發(fā)者通過訂閱系統(tǒng)環(huán)境變化,可以使應用程序及時感知這種變化,并作出相應處理,從而提供更好的用戶體驗。例如,用戶更改系統(tǒng)語言設置時,應用程序可以自動根據(jù)新的語言設置更新用戶界面的語言;當用戶將設備旋轉(zhuǎn)到橫屏或者豎屏時,應用程序可以重新布局用戶界面,以適應屏幕方向和尺寸。

系統(tǒng)配置的變化通常由“設置”中的選項或“控制中心”中的圖標觸發(fā)。訂閱系統(tǒng)環(huán)境變量變化,可以使應用程序更加智能地響應系統(tǒng)環(huán)境變化,從而提供更好的用戶體驗。查看當前支持訂閱變化的系統(tǒng)環(huán)境變量,請參見[Configuration]。

基于當前的應用模型,可以通過以下幾種方式來實現(xiàn)訂閱系統(tǒng)環(huán)境變量的變化。

  • [使用ApplicationContext訂閱回調(diào)]
  • [在AbilityStage組件容器中訂閱回調(diào)]
  • [在UIAbility組件中訂閱回調(diào)]
  • [在ExtensionAbility組件中訂閱回調(diào)]
  • 發(fā)前請熟悉鴻蒙開發(fā)指導文檔 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]

使用ApplicationContext訂閱回調(diào)

[ApplicationContext]提供了注冊回調(diào)函數(shù)以訂閱系統(tǒng)環(huán)境變量的變化,并且可以通過調(diào)用相應的方法來撤銷該回調(diào)。這有助于在資源不再需要時釋放相關資源,從而提高系統(tǒng)的可靠性和性能。

  1. 使用ApplicationContext.on(type: 'environment', callback: EnvironmentCallback)方法,應用程序可以通過在非應用組件模塊中訂閱系統(tǒng)環(huán)境變量的變化來動態(tài)響應這些變化。例如,使用該方法在頁面中監(jiān)測系統(tǒng)語言的變化。
    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;
      private callbackId: number = 0; // 注冊訂閱系統(tǒng)環(huán)境變化的ID
    
      subscribeConfigurationUpdate(): void {
        let systemLanguage: string | undefined = this.context.config.language; // 獲取系統(tǒng)當前語言
    
        // 1.獲取ApplicationContext
        let applicationContext = this.context.getApplicationContext();
    
        // 2.通過applicationContext訂閱環(huán)境變量變化
        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}`);
              systemLanguage = newConfig.language; // 將變化之后的系統(tǒng)語言保存,作為下一次變化前的系統(tǒng)語言
            }
          },
          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() {
        //...
      }
    }
    
  2. 在資源使用完成之后,可以通過調(diào)用ApplicationContext.off(type: 'environment', callbackId: number)方法釋放相關資源。
    import common from '@ohos.app.ability.common';
    import { BusinessError } from '@ohos.base';
    import hilog from '@ohos.hilog';
    
    const TAG: string = '[CollaborateAbility]';
    const DOMAIN_NUMBER: number = 0xFF00;
    
    @Entry
    @Component
    struct Index {
      private context = getContext(this) as common.UIAbilityContext;
      private callbackId: number = 0; // 注冊訂閱系統(tǒng)環(huán)境變化的ID
    
      unsubscribeConfigurationUpdate() {
        let applicationContext = this.context.getApplicationContext();
        try {
           applicationContext.off('environment', this.callbackId);
        } catch (err) {
           let code = (err as BusinessError).code;
           let message = (err as BusinessError).message;
           hilog.error(DOMAIN_NUMBER, TAG, `Failed to unregister applicationContext. Code is ${code}, message is ${message}`);
        };
    
      }
    
      // 頁面展示
      build() {
        //...
      }
    }
    

在AbilityStage組件容器中訂閱回調(diào)

使用[AbilityStage.onConfigurationUpdate()]回調(diào)方法訂閱系統(tǒng)環(huán)境變量的變化。當系統(tǒng)環(huán)境變量發(fā)生變化時,會調(diào)用該回調(diào)方法。在該方法中,通過[Configuration]對象獲取最新的系統(tǒng)環(huán)境配置信息??梢赃M行相應的界面適配等操作,從而提高系統(tǒng)的靈活性和可維護性。

說明:

  • DevEco Studio默認工程中未自動生成AbilityStage,AbilityStage文件的創(chuàng)建請參見[AbilityStage組件容器]。
  • 當使用回調(diào)方法訂閱系統(tǒng)環(huán)境變量的變化時,該回調(diào)方法會隨著[AbilityStage]的生命周期而存在,在Module銷毀時一并銷毀。

例如,在[AbilityStage.onConfigurationUpdate()]回調(diào)方法中實現(xiàn)監(jiān)測系統(tǒng)語言的變化。

import AbilityStage from '@ohos.app.ability.AbilityStage';
import hilog from '@ohos.hilog';
import type { Configuration } from '@ohos.app.ability.Configuration';

const TAG: string = '[MyAbilityStage]';
const DOMAIN_NUMBER: number = 0xFF00;

let systemLanguage: string | undefined; // 系統(tǒng)當前語言

export default class MyAbilityStage extends AbilityStage {
  onCreate(): void {
    systemLanguage = this.context.config.language; // Module首次加載時,獲取系統(tǒng)當前語言
    hilog.info(DOMAIN_NUMBER, TAG, `systemLanguage is ${systemLanguage}`);
    //...
  }

  onConfigurationUpdate(newConfig: Configuration): void {
    hilog.info(DOMAIN_NUMBER, TAG, `onConfigurationUpdate, language: ${newConfig.language}`);
    hilog.info(DOMAIN_NUMBER, TAG, `onConfigurationUpdated systemLanguage is ${systemLanguage}, newConfig: ${JSON.stringify(newConfig)}`);

    if (systemLanguage !== newConfig.language) {
      hilog.info(DOMAIN_NUMBER, TAG, `systemLanguage from ${systemLanguage} changed to ${newConfig.language}`);
      systemLanguage = newConfig.language; // 將變化之后的系統(tǒng)語言保存,作為下一次變化前的系統(tǒng)語言
    }
  }
}

在UIAbility組件中訂閱回調(diào)

UIAbility組件提供了UIAbility.onConfigurationUpdate()回調(diào)方法用于訂閱系統(tǒng)環(huán)境變量的變化。當系統(tǒng)環(huán)境變量發(fā)生變化時,會調(diào)用該回調(diào)方法。在該方法中,通過[Configuration]對象獲取最新的系統(tǒng)環(huán)境配置信息,而無需重啟UIAbility。

說明:

當使用回調(diào)方法訂閱系統(tǒng)環(huán)境變量的變化時,該回調(diào)方法會隨著UIAbility的生命周期而存在,在UIAbility銷毀時一并銷毀。

例如,在onConfigurationUpdate()回調(diào)方法中實現(xiàn)監(jiān)測系統(tǒng)語言的變化。

import AbilityConstant from '@ohos.app.ability.AbilityConstant';
import hilog from '@ohos.hilog';
import UIAbility from '@ohos.app.ability.UIAbility';
import Want from '@ohos.app.ability.Want';
import { Configuration } from '@ohos.app.ability.Configuration';

const TAG: string = '[EntryAbility]';
const DOMAIN_NUMBER: number = 0xFF00;

let systemLanguage: string | undefined; // 系統(tǒng)當前語言

export default class EntryAbility extends UIAbility {
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
    systemLanguage = this.context.config.language; // UIAbility實例首次加載時,獲取系統(tǒng)當前語言
    hilog.info(DOMAIN_NUMBER, TAG, `systemLanguage is ${systemLanguage}`);
  }

  onConfigurationUpdate(newConfig: Configuration): void {
    hilog.info(DOMAIN_NUMBER, TAG, `onConfigurationUpdated systemLanguage is ${systemLanguage}, newConfig: ${JSON.stringify(newConfig)}`);

    if (systemLanguage !== newConfig.language) {
      hilog.info(DOMAIN_NUMBER, TAG, `systemLanguage from ${systemLanguage} changed to ${newConfig.language}`);
      systemLanguage = newConfig.language; // 將變化之后的系統(tǒng)語言保存,作為下一次變化前的系統(tǒng)語言
    }
  }
  // ...
}

在ExtensionAbility組件中訂閱回調(diào)

ExtensionAbility組件提供了onConfigurationUpdate()回調(diào)方法用于訂閱系統(tǒng)環(huán)境變量的變化。當系統(tǒng)環(huán)境變量發(fā)生變化時,會調(diào)用該回調(diào)方法。在該方法中,通過[Configuration]對象獲取最新的系統(tǒng)環(huán)境配置信息。
搜狗高速瀏覽器截圖20240326151450.png

說明:
HarmonyOSOpenHarmony鴻蒙文檔籽料:mau123789是v直接拿
當使用回調(diào)方法訂閱系統(tǒng)環(huán)境變量的變化時,該回調(diào)方法會隨著ExtensionAbility的生命周期而存在,在ExtensionAbility銷毀時一并銷毀。

以FormExtensionAbility為例說明。例如,在onConfigurationUpdate()回調(diào)方法中實現(xiàn)系統(tǒng)環(huán)境變量的變化。

import FormExtensionAbility from '@ohos.app.form.FormExtensionAbility';
import { Configuration } from '@ohos.app.ability.Configuration';
import hilog from '@ohos.hilog';

const TAG: string = '[EntryAbility]';
const DOMAIN_NUMBER: number = 0xFF00;

export default class EntryFormAbility extends FormExtensionAbility {
  onConfigurationUpdate(config: Configuration) {
    hilog.info(DOMAIN_NUMBER, TAG, '[EntryFormAbility] onConfigurationUpdate:' + JSON.stringify(config));
  }

  // ...
}

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 變量
    +關注

    關注

    0

    文章

    616

    瀏覽量

    29573
  • 組件
    +關注

    關注

    1

    文章

    603

    瀏覽量

    19070
  • 鴻蒙
    +關注

    關注

    60

    文章

    3031

    瀏覽量

    46194
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    深度解析?RK?平臺?U-Boot?環(huán)境變量(env):原理、配置與實戰(zhàn)

    環(huán)境變量(env)是?U-Boot?的核心配置機制,無需重新編譯即可靈活調(diào)整啟動參數(shù)。在?Rockchip(RK)平臺上,環(huán)境變量不僅繼承了?U-Boot?的通用特性,還針對?RK?芯片架構(gòu)做了大量
    的頭像 發(fā)表于 04-27 07:11 ?533次閱讀
    深度解析?RK?平臺?U-Boot?<b class='flag-5'>環(huán)境變量</b>(env):原理、配置與實戰(zhàn)

    飛凌嵌入式ElfBoard-環(huán)境變量之刪除清空環(huán)境變量environ

    如同之前介紹environ獲取環(huán)境變量一樣;在加載進程的時候,系統(tǒng)會為每一個進程復制一份系統(tǒng)環(huán)境變量副本,可以直接通過將全局變量enviro
    發(fā)表于 03-26 10:23

    飛凌嵌入式ElfBoard-環(huán)境變量之刪除清空環(huán)境變量clearenv

    有的場景需要清空環(huán)境變量,然后再重新進行構(gòu)建,如果是使用unsetent的話會比較繁瑣;clearenv() 將當前進程的環(huán)境變量列表清空,使得后續(xù)的環(huán)境變量訪問(如getenv())返回 NULL
    發(fā)表于 03-26 10:22

    飛凌嵌入式ElfBoard-環(huán)境變量之添加修改環(huán)境變量setenv

    setenv() 函數(shù)可以向進程的環(huán)境變量列表中添加新的環(huán)境變量,或者修改現(xiàn)有環(huán)境變量的值。相比 putenv(),setenv() 提供了更安全的方式來操作環(huán)境變量,因為它會復制傳入
    發(fā)表于 03-26 09:24

    飛凌嵌入式ElfBoard-環(huán)境變量之添加修改環(huán)境變量putenv

    的程序有效,不會永久修改系統(tǒng)環(huán)境變量。用法如下:NAME=value ./test在當前路徑下執(zhí)行測試程序test的時候,以 name=value 的形式在其路徑前面加上環(huán)境變量NAME=value
    發(fā)表于 03-26 09:22

    飛凌嵌入式ElfBoard-環(huán)境變量之獲取環(huán)境變量

    環(huán)境變量,也可以使用 /proc 文件系統(tǒng)。例如,要查看進程ID為 PID 的進程的環(huán)境變量,可以執(zhí)行以下命令:cat /proc/PID/environ | tr \'\\0\' \'\\n\'這里PID
    發(fā)表于 03-13 08:50

    開源鴻蒙開發(fā)者的跨界成長之路

    在開源鴻蒙開發(fā)者里,有一群“跨界先鋒”,他們帶著不同行業(yè)的積淀,在這片創(chuàng)新土壤上書寫著獨特的技術(shù)故事。張宇昕,浙江眾合科技的鴻蒙系統(tǒng)服務開發(fā)
    的頭像 發(fā)表于 01-23 09:13 ?1178次閱讀

    AT32開源鴻蒙開發(fā)環(huán)境搭建

    開發(fā)環(huán)境成為開展鴻蒙應用開發(fā)的第一步。 本應用指南將圍繞 Ubuntu 操作系統(tǒng),系統(tǒng)性地介
    發(fā)表于 01-16 13:56

    ESP32-S3 工具鏈+環(huán)境配置的最終步驟清單

    -p COM3 flash 步驟5:永久解決環(huán)境變量問題(可選) 若不想每次運行 export.bat,可將工具鏈路徑永久添加到系統(tǒng)環(huán)境變量: 右鍵“此電腦”→“屬性”→“高級系統(tǒng)
    發(fā)表于 11-26 07:36

    WIN10配置Hbird-SDK環(huán)境變量

    按照胡老師的《RISC-V CPU下工程與實踐》的7.4的151和152頁配置Hbird-SDK的環(huán)境變量,出現(xiàn)了問題。 問題如下: 首先創(chuàng)建setup_config.bat,之后CMD中運行
    發(fā)表于 10-27 06:38

    【匯思博SEEK100開發(fā)板試用體驗】在開發(fā)鴻蒙OS搭建QT開發(fā)環(huán)境

    應用所需的功能邏輯。比如與開發(fā)板的硬件功能進行交互,若要調(diào)用開發(fā)板的攝像頭功能,可通過相關的 Qt 多媒體庫結(jié)合鴻蒙系統(tǒng)提供的攝像頭接口進行開發(fā)
    發(fā)表于 08-24 18:34

    Window下AICube使用前如何配置dotnet環(huán)境?

    sysdm.cpl回車, 點擊彈窗系統(tǒng)屬性的高級頁面,可以在右下角看到環(huán)境變量: 進入環(huán)境變量后,在系統(tǒng)變量中尋找Path,選中并點擊編
    發(fā)表于 08-04 06:19

    【HarmonyOS 5】金融應用開發(fā)鴻蒙組件實踐

    原生鴻蒙操作系統(tǒng)星河版,面向開發(fā)者開放申請,余承東宣布鴻蒙生態(tài)設備數(shù)達 8 億臺;建設銀行、郵儲銀行等完成鴻蒙原生應用 Beta 版本
    的頭像 發(fā)表于 07-11 18:20 ?1155次閱讀
    【HarmonyOS 5】金融應用<b class='flag-5'>開發(fā)</b><b class='flag-5'>鴻蒙</b>組件實踐

    【HarmonyOS 5】鴻蒙中的UIAbility詳解(二)

    【HarmonyOS 5】鴻蒙中的UIAbility詳解(二) ##鴻蒙開發(fā)能力 ##HarmonyOS SDK應用服務##鴻蒙金融類應用 (金融理財# 一、前言 今天我們繼續(xù)深入講解
    的頭像 發(fā)表于 07-11 18:17 ?1044次閱讀
    【HarmonyOS 5】<b class='flag-5'>鴻蒙</b>中的UIAbility詳解(二)

    飛凌嵌入式ElfBoard ELF 1板卡-uboot常用命令之環(huán)境變量命令

    作為環(huán)境變量的初始值,uboot運行過程中用到的環(huán)境變量,都是內(nèi)存中的環(huán)境變量,用戶可以使用saveenv指令將內(nèi)存中的環(huán)境變量重新寫入存儲介質(zhì)(啟動介質(zhì))中,下次重啟
    發(fā)表于 05-22 11:28
    荔波县| 敖汉旗| 启东市| 保康县| 肃南| 乳源| 台中县| 仙游县| 渝北区| 辽阳县| 普兰店市| 临汾市| 卓资县| 沙坪坝区| 从化市| 兴国县| 八宿县| 耒阳市| 依兰县| 三门县| 尉犁县| 寿阳县| 英吉沙县| 甘洛县| 梨树县| 宜宾市| 正宁县| 阳泉市| 娱乐| 明星| 齐河县| 彭水| 连城县| 汉源县| 西藏| 和龙市| 松潘县| 合作市| 罗城| 永清县| 临沭县|