[发明专利]通过事件总线分发事件的方法及系统有效
| 申请号: | 201610932971.9 | 申请日: | 2016-10-31 |
| 公开(公告)号: | CN106598751B | 公开(公告)日: | 2020-02-07 |
| 发明(设计)人: | 张磊 | 申请(专利权)人: | 武汉斗鱼网络科技有限公司 |
| 主分类号: | G06F9/54 | 分类号: | G06F9/54 |
| 代理公司: | 42102 湖北武汉永嘉专利代理有限公司 | 代理人: | 许美红 |
| 地址: | 430073 湖北省武汉市东湖开*** | 国省代码: | 湖北;42 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 通过 事件 总线 分发 方法 系统 | ||
本发明提出一种通过事件总线分发事件的方法及系统,其中方法包括以下步骤:事件发布者发布事件;事件总线分析所发布的事件,获取事件参数,并根据该事件参数获取预先分类好的、对应该事件的事件处理函数集合,该事件处理函数集合中包含处理该事件的所有事件处理函数,且每个事件处理函数对应一个事件订阅者;执行该事件处理函数集合中的事件处理函数,将事件分发给事件订阅者。本发明提出了一套完善的事件通信总线,能够很好的分发相应的事件请求,使用简单,逻辑清晰,使得开发者能够更多的去关注业务逻辑,不需要再为事件的分发耗费相应的时间。
技术领域
本发明涉及一种Android系统的通信领域,尤其涉及一种通过事件总线分发事件的方法及系统。
背景技术
在Android的应用程序中通常会有多个界面和多个功能模块。在处理界面或者功能模块之间通信问题的方法在Android中通常有下面几种方案。
其一是通过Handler来进行通信多线程之间的通信,这种使用起来还算比较方便,但是容易造成内存泄漏等问题。其次Handler如果在多个界面传递和使用会比较复杂,大大增加了模块之间的耦合度。使得程序变得更加复杂,后期非常不好维护。
其二是通过广播来进行组件之间的通信,广播在Android系统中是一个比较常见的技术,当时广播有一个最大的缺陷是时效性非常差。广播发出后是由系统进行转发的,系统所有的广播都是走的同一个通道,当广播数量比较多的时候很容易造成阻塞,导致广播接收速度变慢,严重时还会造成广播信号的丢失,所以该方法也不是一套很好的组件通信的方案。
其三是通过接口来实现相互之间的信息交流,但是接口有其局限性,不容易扩展。一旦接口定义好了后期两者的通信就无法进行变更,如果需要变更就需要变更接口,但是接口一旦进行变更其相应的实现逻辑等都需要相应的变化。这对于扩展性而言是非常不利的。所以这个方案也是不适合作为组件之间通信的优选方案。
可见,上述Android系统提供的所有的方法都有其局限性和缺陷。
发明内容
本发明要解决的技术问题在于针对现有技术中事件分发处理速度慢或者使用不便的缺陷,提供一种使用简单,逻辑清晰,使得开发者能够更多的去关注业务逻辑,不需要再为事件的分发耗费相应的时间的通过事件总线分发事件的方法及系统。
本发明解决其技术问题所采用的技术方案是:
提供一种通过事件总线分发事件的方法,包括以下步骤:
事件发布者发布事件;
事件总线分析所发布的事件,获取事件参数,并根据该事件参数获取预先分类好的、对应该事件的事件处理函数集合,该事件处理函数集合中包含处理该事件的所有事件处理函数,且每个事件处理函数对应一个事件订阅者;
执行该事件处理函数集合中的事件处理函数,将事件分发给事件订阅者。
接上述技术方案,所述事件发布者发布的各个事件均被汇总到事件总线。
接上述技术方案,该方法还包括步骤:事件订阅者预先进行注册。
接上述技术方案,还包括步骤:根据事件订阅者注册的信息对事件进行分类,得到各事件的事件处理函数集合。
接上述技术方案,步骤“根据注册的信息对事件进行分类得到各事件的事件处理函数集合”具体为:
事件总线根据注册信息获取订阅事件的事件处理函数,并生成该事件订阅者的事件方法集合listEventMethod,该事件方法集合listEventMethod中包含该事件订阅者所有订阅事件的事件处理函数;
所有事件订阅者的事件方法集合汇总为总事件订阅集合allListEventMethod;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉斗鱼网络科技有限公司,未经武汉斗鱼网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610932971.9/2.html,转载请声明来源钻瓜专利网。
- 上一篇:用于通信的方法、装置和计算机可读存储介质
- 下一篇:远程零拷贝方法





