当前位置: 首页 > wzjs >正文

厦门网络科技有限公司河北seo推广方法

厦门网络科技有限公司,河北seo推广方法,商家商城小程序,网站什么时候备案一、EventHub是什么? 移动应用开发的同学应该比较了解EventHub,类似于EventBus。标准的事件广播通知,订阅,取消订阅的处理。EventHub模块提供了事件中心,提供订阅、取消订阅、触发事件的能力。 类似的框架工具有很多…

一、EventHub是什么?

移动应用开发的同学应该比较了解EventHub,类似于EventBus。标准的事件广播通知,订阅,取消订阅的处理。EventHub模块提供了事件中心,提供订阅、取消订阅、触发事件的能力。

类似的框架工具有很多,例如MQTT。使用起来也超级简单,从介绍上就能大体了解使用方式,见名知意的一种快捷工具。通过一个事件ID即TAG作为唯一的key,进行事件广播通知和订阅。

在ArkUI框架中,EventHub通过单例对象的形式提供,因为放在上下文里。所以每个UIAbility对应一个EventHub。不同的UIAbility的EventHub是不同步的。

从上下文获取EventHub有两种方式:

  1. 在UIAbility中直接通过context获取:
import { UIAbility, Context, Want, AbilityConstant } from '@kit.AbilityKit';export default class EntryAbility extends UIAbility {onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {// 获取eventHublet eventhub = this.context.eventHub;});}
}
  1. 在page界面或者组件中,通过UIcontext强转为UIAbilityContext获取:
let context = getContext(this) as common.UIAbilityContext;
let eventhub = context.eventHub;

获得到EventHub单例对象后,就可以调用emit发送事件,on监听事件,off取消监听事件。进行事件广播的使用。

  // TAG作为事件的id为字符串类型private EVENT_TAG: string = "TEST";/*** EventHub事件回调*/callbackByEventHub = (content: string)=>{promptAction.showToast({message: JSON.stringify(content)});}this.eventHub?.on(this.EVENT_TAG, this.callbackByEventHub); this.eventHub?.off(this.EVENT_TAG, this.callbackByEventHub);
this.eventHub?.off(this.EVENT_TAG);// 第二个参数不传,则代表EVENT_TAG下的所有注册回调都清空

详情参见官网,示例DEMO参见最后章节:
UIAbility组件与UI的数据同步
EventHub API文档

二、Emitter是什么?

类似于EventHub的使用,只是内部封装了事件队列和分发的机制。多了事件id和优先级的概念。并且Emitter也可以在不同线程内调用。

Emitter区别于上文中的EventHub的事件ID,定义了一层对象进行约束。除了事件id,还需要设置事件级别。

  private event: emitter.InnerEvent = {eventId: this.eventId,priority: emitter.EventPriority.LOW   // 定义一个eventId为1的事件,事件优先级为Low};

事件级别分为以下几种类型:
在这里插入图片描述
和EventHub不同的是,事件广播的内容,也进行了约束。 发送事件时传递的数据,支持数据类型包括Array、ArrayBuffer、Boolean、DataView、Date、Error、Map、Number、Object、Primitive(除了symbol)、RegExp、Set、String、TypedArray,数据大小最大为16M。

data是key val形式的对象,可以自己定义里面的key和val。

    let eventData: emitter.EventData = {data: {content: '测试数据',id: 1,isEmpty: false}};

事件的广播发送,订阅和取消订阅与EventHub区别不大。只是多了once一次性监听而已。

  private callback = (eventData: emitter.EventData): void => {};emitter.emit(this.event, eventData);emitter.once(this.event, this.callback)emitter.off(this.event.eventId, this.callback);

详情参见官网,示例DEMO参见最后章节:
使用Emitter进行线程间通信
EventHub API文档

三、EventHub和Emitter的使用场景与区别

  1. EventHub是线程内使用的时间广播工具,Emitter是线程间通信使用的工具
  2. EventHub的使用更简单,属于轻量级的广播工具,主要用于UIAbility和page之间,page和组件之间,组件和组件之间,UI和VM之间的通信,传递的数据内容形式多变且方便(…args: Object[])。Emitter属于重量级的广播工具,封装了优先级和队列的逻辑。传递的数据内容,必须有包裹成进行约束(emitter.EventData)
  3. Emitter监听设置,在on基础上,额外提供了once一次性监听的API。触发之后不需要再手动off取消监听。EventHub则没有。

源码DEMO解析:

import { emitter } from '@kit.BasicServicesKit';
import { common } from '@kit.AbilityKit';
import { promptAction } from '@kit.ArkUI';@Entry
@Component
struct EventHubAndEmitterTestPage {// --------------- EventHubprivate context = getContext(this) as common.UIAbilityContext;private eventHub: common.EventHub | null = null;private EVENT_TAG: string = "TEST";private emitByEventHub(){this.eventHub = this.context.eventHub;this.eventHub.emit(this.EVENT_TAG, "测试数据EventHub");}/*** EventHub事件回调*/callbackByEventHub = (content: string)=>{promptAction.showToast({message: JSON.stringify(content)});}private registerByEventHub = ()=>{this.eventHub?.on(this.EVENT_TAG, this.callbackByEventHub);}private unRegisterByEventHub = ()=>{this.eventHub?.off(this.EVENT_TAG, this.callbackByEventHub);}// --------------- Emitterprivate eventId: number = 1;private event: emitter.InnerEvent = {eventId: this.eventId,priority: emitter.EventPriority.LOW   // 定义一个eventId为1的事件,事件优先级为Low};private emitByEmitter(){let eventData: emitter.EventData = {data: {content: '测试数据',id: 1,isEmpty: false}};// 发送eventId为1的事件,事件内容为eventDataemitter.emit(this.event, eventData);}private callback = (eventData: emitter.EventData): void => {promptAction.showToast({message: JSON.stringify(eventData)});};private registerByEmitter(){emitter.on(this.event, this.callback);// 监听触发后,自动消除监听。不需要手动offemitter.once(this.event, this.callback)}private unRegisterByEmitter(){emitter.off(this.event.eventId, this.callback);}// ---------------点击事件处理onEmitEvent = ()=>{this.emitByEmitter();this.emitByEventHub();}onRegisterEvent = ()=>{this.registerByEmitter();this.registerByEventHub();}onUnRegisterEvent = ()=>{this.unRegisterByEmitter();this.unRegisterByEventHub();}/*** 统一样式封装*/@Styles ButtonStyle(){.width(px2vp(350)).height(px2vp(200)).margin({ top: px2vp(66) })}build() {Column(){Button("发送事件").ButtonStyle().onClick(this.onEmitEvent)Button("监听事件").ButtonStyle().onClick(this.onRegisterEvent)Button("取消事件").ButtonStyle().onClick(this.onUnRegisterEvent)}.size({width: "100%",height: "100%"})}
}

文章转载自:

http://FHW6rtKu.pghry.cn
http://osKK24Yl.pghry.cn
http://WpsCtEEf.pghry.cn
http://dWviCcn2.pghry.cn
http://9W0W4wUs.pghry.cn
http://graMmsJU.pghry.cn
http://oOKAETAo.pghry.cn
http://hkH8M5E7.pghry.cn
http://RoMWZ0AC.pghry.cn
http://XiklFfYx.pghry.cn
http://D2qd0gor.pghry.cn
http://Jgv8ygZv.pghry.cn
http://bpyDWCw0.pghry.cn
http://Oxj6xmJh.pghry.cn
http://fgsmX8XG.pghry.cn
http://3d4fsmIy.pghry.cn
http://ftefg28Q.pghry.cn
http://KOhNl2k2.pghry.cn
http://vpav4NdB.pghry.cn
http://OhRjx5xm.pghry.cn
http://JxH2yRI6.pghry.cn
http://m010nslz.pghry.cn
http://vlFmHXb6.pghry.cn
http://I8A4BC1a.pghry.cn
http://QGLKO0BP.pghry.cn
http://7xKGzVlt.pghry.cn
http://d2BGopkR.pghry.cn
http://p9E1puG4.pghry.cn
http://n3yBSfXR.pghry.cn
http://IhJXVa3t.pghry.cn
http://www.dtcms.com/wzjs/717990.html

相关文章:

  • 石家庄门户网站制作开发公司挖出的沙子归谁
  • 备案号放网站下面居中收录网站有哪些
  • 电商网站建设教案从化一站式网站建设
  • 惠州网站小程序建设点南昌企业建设网站设计
  • 一级a做爰片不卡的网站最近有哪些新闻
  • 北京建设工程交易协会网站企业网站必须做可信网站认证
  • 云建站网址网站图片尺寸
  • 网站建设骗黑马程序员教程
  • 赵公口网站建设wordpress更新提示ftp
  • 网站页面设计规范电脑零基础培训学校
  • 南京移动网站设计广告营销策划是做什么的
  • 湖州做网站推广的公司wordpress电子商务插件
  • 做网站的抬头标语怎么做冷水滩城乡建设局网站
  • 网站上传到虚拟主机市场策划是做什么的
  • 有关建设旅游网站的公司软件系统开发合同
  • 企业模板建站公司南京比较好的网络策划公司
  • 网站建设设计未来前景上海网站建设流
  • 珠海营销型网站哪家好广州 网站建设公司
  • 江西企业网站建设网站品牌推广公司
  • 优质做网站哪家好品牌设计包装
  • 百度首页网站的设计中企动力科技有限公司怎么样
  • 莆田企业自助建站系统多多进宝怎么做自己网站
  • 顺德手机网站设计价位家政门户网站源码
  • 酒店网站设计方案网站展示程序
  • 公司网站如何做客户关系管理
  • 营销型企业网站的建设方案江苏建设网
  • 智慧旅游网站建设方案ppt模板中国电力建设股份部官方网站
  • 专业维护网站的公司微信公众平台设计
  • 企业门户网站作用静态网页设计代码模板
  • 免费网站制作三合一收款码seo优化教程培训