公共事件(CES)

1、公共事件概述
1.1、公共事件的分类

公共事件(Common Event Service,CES)根据事件发送方不同,可分为系统公共事件和自定义公共事件。

在这里插入图片描述

系统公共事件系统将收集到的事件信息根据系统策略发送给订阅该事件的用户程序,公共事件包括终端设备用户可感知的亮灭屏事件,以及系统关键服务发布的系统事件(例如USB插拔,网络连接,系统升级等)
自定义公共事件由应用自身定义的期望特定订阅者可以接收到的公共事件,这些公共事件往往与应用自身的业务逻辑有关
1.2、公共事件的开发

公共事件的开发主要涉及到3个部分,即公共事件订阅开发公共事件发布开发公共事件取消订阅开发

公共事件订阅开发
当需要订阅某个公共事件,获取某个公共事件传递的参数时,可以创建一个订阅者对象,用于作为订阅公共事件的载体,订阅公共事件并获取公共事件传递而来的参数。订阅部分系统公共事件需要申请权限。
公共事件订阅开发的接口如下:
+ 创建订阅者对象(callBack):createSubscriber(subscribeInfo: CommonEventSubscribeInfo,callback:AsyncCallback)
+ 创建订阅者对象(promise):createSubscriber(subscribeInfo: CommonEventSubscribeInfo)
+ 订阅公共事件:subscriber(subscribeInfo: CommonEventSubscribeInfo,callback:AsyncCallback)
公共事件发布开发
当需要发布某个自定义公共事件时,可以通过此方法发布事件,发布的公共事件可以携带数据,供订阅者解析并进行下一步的处理
+ 发布公共事件:publish(event:string,callback:AsyncCallback)
+ 指定发布信息并发布公共事件:publish(event:string,options:CommonEventPublishData,callback:AsyncCallback)
公共事件取消订阅开发
订阅者需要取消已订阅的某个公共事件时,可以通过取消订阅公共事件
取消订阅公共事件:unSubscribe(subscriber:CommomEventSubscriber,callback?:AsyncCallback)
2、实战:订阅,发布,取消公共事件
2.1、创建订阅者
/**
 * 创建订阅者
 */
private createSubscriber() {
  if (this.subscribe) {
    this.message = "subscribe already create"
  } else {
    commonEventManager.createSubscriber({    //创建订阅者
      events: ["testEvent"]                  //指定订阅的事件名称
    }, (err, subscribe) => {                // 创建结果的回调
      if (err) {
        this.message = "create subscribe failure"
      } else {
        this.subscribe = subscribe; //创建订阅成功
        this.message = "create subscriber success";
      }
    })
  }
}
2.2、订阅事件
/**
 * 订阅公共事件
 */
private subscribeCommentEvent(){
  if(this.subscribe){
    //根据创建的subscriber开始订阅事件
    commonEventManager.subscribe(this.subscribe,(err,data) => {
      if(err){
        //异常处理
        this.message = "subscribe event failer" + err;
      } else {
        // 接收到事件
        this.message = "subscribe event success "+ JSON.stringify(data);
      }
    })
  } else {
    this.message = "please create subcribe";
  }
}
2.3、发布事件
/**
 * 发布事件
 */
private publishCommonEvent(){
  //发布公共事件
  commonEventManager.publish("testEvent",(err) =>{
    if(err){
      this.message = "publish event error: " + err;
    } else {
      this.message = "publish event with data success";
    }
  })
}
2.4、取消订阅
/**
 * 取消发布
 */
private  unsubscribeCommentEvent(){
  if(this.subscribe){
    commonEventManager.unsubscribe(this.subscribe,(err,data) => {
      if(err){
        this.message = "unsubscribe event failuere "+ err;
      } else {
        this.message = "unsubscribe event success";
      }
    })
  }else {
    this.message = "already unsubscribed"
  }
}
  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值