HarmonyOS 鸿蒙Next EventBus的替代框架或者ArkTS原生支持的功能

发布于 1周前 作者 sinazl 来自 鸿蒙OS

HarmonyOS 鸿蒙Next EventBus的替代框架或者ArkTS原生支持的功能

描述: 应用中需要全局传递一些参数,比如用户登录成功后我们需要全局通知项目中一些页面刷新数据,所以需要有类似EventBus的全局传递数据的功能。

2 回复

可以考虑采用公共事件实现需求,参考代码:

#公共事件的订阅

let subscriber:CommonEventManager.CommonEventSubscriber; //用于保存创建成功的订阅者对象,后续使用其完成订阅及退订的动作

//订阅者信息

let subscribeInfo:CommonEventManager.CommonEventSubscribeInfo = {

  events: ["event"]

};

//订阅公共事件回调

function SubscribeCB(err:Base.BusinessError, data:CommonEventManager.CommonEventData) {

  if (err) {

    console.error(`subscribe failed, code is ${err.code}, message is ${err.message}`);

  } else {

    console.info("subscribe Index");

  }

}

//创建订阅者回调

function createCB(err:Base.BusinessError, commonEventSubscriber:CommonEventManager.CommonEventSubscriber) {

  if(!err) {

    console.info("createSubscriber");

    subscriber = commonEventSubscriber;

    //订阅公共事件

    try {

      CommonEventManager.subscribe(subscriber, SubscribeCB);

    } catch (error) {

      let err:Base.BusinessError = error as Base.BusinessError;

      console.error(`subscribe failed, code is ${err.code}, message is ${err.message}`);

    }

  } else {

    console.error(`createSubscriber failed, code is ${err.code}, message is ${err.message}`);

  }

}

//创建订阅者 

    try {

      CommonEventManager.createSubscriber(subscribeInfo, createCB);

    } catch (error) {

      let err:Base.BusinessError = error as Base.BusinessError;

      console.error(`createSubscriber failed, code is ${err.code}, message is ${err.message}`);

    }




//发布公共事件回调

function publishCB(err:Base.BusinessError) {

  if (err) {

    console.error(`publish failed, code is ${err.code}, message is ${err.message}`);

  } else {

    console.info("publish");

  }

}

//发布公共事件

            try {

              CommonEventManager.publish("event", publishCB);

            } catch (error) {

              let err:Base.BusinessError = error as Base.BusinessError;

              console.error(`publish failed, code is ${err.code}, message is ${err.message}`);

            }

参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-commoneventmanager-V5#commoneventmanagersubscribe     

注意:添加订阅者会导致内存增加,请在合适时机记得释放。

更多关于HarmonyOS 鸿蒙Next EventBus的替代框架或者ArkTS原生支持的功能的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对HarmonyOS 鸿蒙Next EventBus的替代框架或ArkTS原生支持的功能,以下是专业且直接的回答:

在HarmonyOS鸿蒙系统中,若需寻找Next EventBus的替代框架,可考虑以下方案:

  1. ArkUI组件间通信:利用ArkUI(即ArkTS)提供的组件间通信机制,实现跨组件、跨页面的数据传递和事件分发。该机制基于系统底层的IPC(进程间通信)能力,能够高效、安全地处理复杂事件传递需求。

  2. 分布式事件总线:HarmonyOS支持分布式事件总线功能,允许在不同设备、不同应用间传递事件。通过注册和监听特定事件,开发者可以实现跨设备的事件分发和响应,从而替代传统的EventBus机制。

对于ArkTS原生支持的功能,主要包括:

  • 声明式UI构建:ArkTS提供了声明式UI构建能力,允许开发者以更直观、简洁的方式描述UI界面,提升开发效率和代码可维护性。
  • 组件化开发:支持将UI界面拆分为多个独立的组件,每个组件具有独立的生命周期和状态管理,便于复用和扩展。
  • 分布式能力:原生支持分布式应用开发,允许开发者在多个设备上协同工作,实现跨设备的UI显示和数据同步。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部