线程间通信

目前开始写demo,由于以前没做过app开发,demo只是简单的展示SDK的调用。SDK初始化接口中有一个推送的回调函数,会把SDK的中间状态等信息推送给调用者,以便和用户交互。

那么问题来了,初始化接口不管是在主线程调用还是work线程调用,推送回调接口被调用的时机和线程都是不确定的,重要的问题就是要在任何线程调用回调时,界面都能有反应。

官方资料查询了一下,发现了Emitter的相关说明及示例如下:

Emitter主要提供线程间发送和处理事件的能力,包括对持续订阅事件或单次订阅事件的处理、取消订阅事件、发送事件到事件队列等。

Emitter的开发步骤如下:

  1. 订阅事件

    import emitter from "@ohos.events.emitter";
    // 定义一个eventId为1的事件
    let event = {
    eventId: 1
    };
    // 收到eventId为1的事件后执行该回调
    let callback = (eventData) => {
    console.info('event callback');
    };
    // 订阅eventId为1的事件
    emitter.on(event, callback);

  2. 发送事件

    import emitter from "@ohos.events.emitter";
    // 定义一个eventId为1的事件,事件优先级为Low
    let event = {
    eventId: 1,
    priority: emitter.EventPriority.LOW
    };
    let eventData = {
    data: {
    "content": "c",
    "id": 1,
    "isEmpty": false,
    }
    };
    // 发送eventId为1的事件,事件内容为eventData
    emitter.emit(event, eventData);

参考示例略作修改,加入到程序里,目前还没有测试,后面有了结果再更新,总感觉不会这么顺利。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昵称全都被占用

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值