加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_郴州站长网 (http://www.0735zz.com/)- 云通信、区块链、物联设备、云计算、站长网!
当前位置: 首页 > 站长资讯 > 传媒 > 正文

B站开源弹幕库引擎的迁移

发布时间:2021-04-01 11:56:25 所属栏目:传媒 来源:互联网
导读:看到两个版本的多线程通信的大体逻辑都是相同的,两个Thread想要进行通信,都需要四个步骤: 1.通信发起方需要构建(或实例化)一个结构体(或类)来进行事件的传递(并携带信息本身)。 2.这个携带着信息的结构化对象到了信息接收方后,会首先进入一个消息队列进

看到两个版本的多线程通信的大体逻辑都是相同的,两个Thread想要进行通信,都需要四个步骤:

1.通信发起方需要构建(或实例化)一个结构体(或类)来进行事件的传递(并携带信息本身)。

2.这个携带着信息的结构化对象到了信息接收方后,会首先进入一个消息队列进行等待处理。

3.当结构化对象被从队列中取出后,会进入消息接收方的信息处理逻辑。

4.处理完成后消息接收方会生成一个反馈(回调),将处理结果反馈给消息发送方。

但是我们可以细心观察一下,安卓和鸿蒙的处理细节是有很大差异的。在安卓上使用这个机制的时候,需要先new一个HandlerThread,然后new一个looper,接着将他们绑定在一起,使用Thread.start才能让跑起来,实现消息队列发送及取出消息处理的功能。在鸿蒙上则不用如此麻烦,只需要new一个eventrunner就可以实现同样的功能,如下图所示这里就是一个典型的例子,注释方法为安卓方法,下面方法是鸿蒙方法。可以看到在RECT(Class:RectFloat)这个变量的初始化中就出现了不一样的使用方式。

4. 功能重写

前三种方法,接口在安卓和鸿蒙间存在对应关系,我们只需要理解、查找和匹配。在功能实现方式完全不同的情况下,需要我们具有一定的代码阅读能力和重写能力,在鸿蒙中对相应功能进行重写。以弹幕库为例:

---多线程通信:

安卓和鸿蒙的多线程通信机制类似,但是使用方法相差较大。

解决方法:功能重写。

(编辑:开发网_郴州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读