通过事件总线分发事件的方法及系统技术方案

技术编号:15254099 阅读:127 留言:0更新日期:2017-05-02 20:02
本发明专利技术提出一种通过事件总线分发事件的方法及系统,其中方法包括以下步骤:事件发布者发布事件;事件总线分析所发布的事件,获取事件参数,并根据该事件参数获取预先分类好的、对应该事件的事件处理函数集合,该事件处理函数集合中包含处理该事件的所有事件处理函数,且每个事件处理函数对应一个事件订阅者;执行该事件处理函数集合中的事件处理函数,将事件分发给事件订阅者。本发明专利技术提出了一套完善的事件通信总线,能够很好的分发相应的事件请求,使用简单,逻辑清晰,使得开发者能够更多的去关注业务逻辑,不需要再为事件的分发耗费相应的时间。

Method and system for distributing events through event bus

The present invention provides a method and a system for distributing events by event bus, wherein the method comprises the following steps: event publish events; release event bus analysis event, obtain the event parameters, and obtain the pre classification of event set function should be good, according to the parameters of the event, the event handler for all the event includes event processing in the collection and processing functions, each event handler corresponds to an event subscriber; the execution of the event handling function set in event processing function, the event to event subscribers. The invention provides a set of perfect event communication bus, can well distribute the corresponding event request, the use of simple, clear logic, so the developer can more attention to business logic, do not need to cost the corresponding time distribution of events.

【技术实现步骤摘要】

本专利技术涉及一种Android系统的通信领域,尤其涉及一种通过事件总线分发事件的方法及系统
技术介绍
在Android的应用程序中通常会有多个界面和多个功能模块。在处理界面或者功能模块之间通信问题的方法在Android中通常有下面几种方案。其一是通过Handler来进行通信多线程之间的通信,这种使用起来还算比较方便,但是容易造成内存泄漏等问题。其次Handler如果在多个界面传递和使用会比较复杂,大大增加了模块之间的耦合度。使得程序变得更加复杂,后期非常不好维护。其二是通过广播来进行组件之间的通信,广播在Android系统中是一个比较常见的技术,当时广播有一个最大的缺陷是时效性非常差。广播发出后是由系统进行转发的,系统所有的广播都是走的同一个通道,当广播数量比较多的时候很容易造成阻塞,导致广播接收速度变慢,严重时还会造成广播信号的丢失,所以该方法也不是一套很好的组件通信的方案。其三是通过接口来实现相互之间的信息交流,但是接口有其局限性,不容易扩展。一旦接口定义好了后期两者的通信就无法进行变更,如果需要变更就需要变更接口,但是接口一旦进行变更其相应的实现逻辑等都需要相应的变化。这对于扩展性而言是非常不利的。所以这个方案也是不适合作为组件之间通信的优选方案。可见,上述Android系统提供的所有的方法都有其局限性和缺陷。
技术实现思路
本专利技术要解决的技术问题在于针对现有技术中事件分发处理速度慢或者使用不便的缺陷,提供一种使用简单,逻辑清晰,使得开发者能够更多的去关注业务逻辑,不需要再为事件的分发耗费相应的时间的通过事件总线分发事件的方法及系统。本专利技术解决其技术问题所采用的技术方案是:提供一种通过事件总线分发事件的方法,包括以下步骤:事件发布者发布事件;事件总线分析所发布的事件,获取事件参数,并根据该事件参数获取预先分类好的、对应该事件的事件处理函数集合,该事件处理函数集合中包含处理该事件的所有事件处理函数,且每个事件处理函数对应一个事件订阅者;执行该事件处理函数集合中的事件处理函数,将事件分发给事件订阅者。接上述技术方案,所述事件发布者发布的各个事件均被汇总到事件总线。接上述技术方案,该方法还包括步骤:事件订阅者预先进行注册。接上述技术方案,还包括步骤:根据事件订阅者注册的信息对事件进行分类,得到各事件的事件处理函数集合。接上述技术方案,步骤“根据注册的信息对事件进行分类得到各事件的事件处理函数集合”具体为:事件总线根据注册信息获取订阅事件的事件处理函数,并生成该事件订阅者的事件方法集合listEventMethod,该事件方法集合listEventMethod中包含该事件订阅者所有订阅事件的事件处理函数;所有事件订阅者的事件方法集合汇总为总事件订阅集合allListEventMethod;遍历总事件订阅集合allListEventMethod,根据事件类型进行分类,得到各个事件的事件处理函数集合。接上述技术方案,步骤“遍历总事件订阅集合allListEventMethod,根据事件类型进行分类,得到各个事件的事件处理函数集合”具体为:使用for循环语句遍历总事件订阅集合allListEventMethod中的每一个元素,每个元素均表示事件的处理函数,每次获取其中一个元素;通过获取的每一个元素得到其中所包含的事件参数信息;根据事件参数信息中的事件类型对总事件订阅集合allListEventMethod进行分类,得到各个事件的处理函数集合。接上述技术方案,事件订阅者存在优先级,优先级高的事件订阅者可取消事件订阅并继续向优先级低的事件订阅者分发。本专利技术还提供了一种通过事件总线分发事件的系统,包括:事件发布模块,用于事件发布者发布事件;事件分析模块,用于通过事件总线分析所发布的事件,获取事件参数,并根据该事件参数获取预先分类好的、对应该事件的事件处理函数集合,该事件处理函数集合中包含处理该事件的所有事件处理函数,且每个事件处理函数对应一个事件订阅者;事件分发模块,用于通过事件总线分发事件,具体为执行该事件处理函数集合中的事件处理函数,将事件分发给事件订阅者。接上述技术方案,该系统还包括:注册模块,用于事件订阅者预先进行注册;事件处理函数集合生成模块,用于根据注册的信息对事件进行分类得到各事件的事件处理函数集合。接上述技术方案,所述事件处理函数集合生成模块具体包括:事件订阅者的事件方法集合生成模块,用于通过事件总线生成事件订阅者的事件方法集合,具体为事件总线根据注册信息获取订阅事件的事件处理函数,并生成该事件订阅者的事件方法集合listEventMethod,该事件方法集合listEventMethod中包含该事件订阅者所有订阅事件的事件处理函数;总事件订阅集合生成模块,用于生成总事件订阅集合allListEventMethod,该总事件订阅集合allListEventMethod包含所有事件订阅者的事件方法集合;事件分类模块,用于遍历总事件订阅集合allListEventMethod,根据事件类型进行分类,得到各个事件的事件处理函数集合。本专利技术产生的有益效果是:本专利技术提出了一套完善的事件通信总线,能够很好的解耦事件发送者和事件处理者之间的关系。应用程序所有的事件都会分发到事件总线中,事件总线会对事件进行分类和分析,最后将时间发布到对应的订阅者去处理。通过事件总线能够很好的分发相应的事件请求,使用简单,逻辑清晰,使得开发者能够更多的去关注业务逻辑,不需要再为事件的分发耗费相应的时间。附图说明下面将结合附图及实施例对本专利技术作进一步说明,附图中:图1为本专利技术实施例事件分发的整体流程图;图2为本专利技术实施例通过事件总线分发事件的方法流程图一;图3为本专利技术实施例通过事件总线分发事件的方法流程图二;图4为本专利技术实施例事件订阅者的注册流程图;图5为本专利技术实施例通过事件总线分发事件的方法流程图三;图6为图5中步骤SA的具体流程图;图7为图6中步骤SA3的具体流程图;图8为本专利技术实施例分完类型后的事件函数模型;图9为本专利技术实施例通过事件总线分发事件的系统结构示意图一;图10为本专利技术实施例通过事件总线分发事件的系统结构示意图二;图11为图10中事件处理函数集合生成模块结构示意图。具体实施方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本专利技术,并不用于限定本专利技术。对本专利技术所涉及的名词进行如下解释:Handler:Handler主要用于异步消息的处理:当发出一个消息之后,首先进入一个消息队列,发送消息的函数即刻返回,而另外一个部分在消息队列中逐一将消息取出,然后对消息进行处理,也就是发送消息和接收消息不是同步的处理。这种机制通常用来处理相对耗时比较长的操作。Class:类是面向对象程序设计中的概念,是面向对象编程的基础。类的实质是一种数据类型,类似于int、char等基本类型,不同的是它是一种复杂的数据类型。因为它的本质是类型,而不是数据,所以不存在于内存中,不能被直接操作,只有被实例化为对象时,才会变得可操作。反射:反射,一种计算机处理方式。是程序可以访问、检测和修改它本身状态或行为的一种能力。JDK:JDK是Java语言的软件本文档来自技高网...

【技术保护点】
一种通过事件总线分发事件的方法,其特征在于,包括以下步骤:事件发布者发布事件;事件总线分析所发布的事件,获取事件参数,并根据该事件参数获取预先分类好的、对应该事件的事件处理函数集合,该事件处理函数集合中包含处理该事件的所有事件处理函数,且每个事件处理函数对应一个事件订阅者;执行该事件处理函数集合中的事件处理函数,将事件分发给事件订阅者。

【技术特征摘要】
1.一种通过事件总线分发事件的方法,其特征在于,包括以下步骤:事件发布者发布事件;事件总线分析所发布的事件,获取事件参数,并根据该事件参数获取预先分类好的、对应该事件的事件处理函数集合,该事件处理函数集合中包含处理该事件的所有事件处理函数,且每个事件处理函数对应一个事件订阅者;执行该事件处理函数集合中的事件处理函数,将事件分发给事件订阅者。2.根据权利要求1所述的方法,其特征在于,所述事件发布者发布的各个事件均被汇总到事件总线。3.根据权利要求1所述的方法,其特征在于,该方法还包括步骤:事件订阅者预先进行注册。4.根据权利要求3所述的方法,其特征在于,还包括步骤:根据事件订阅者注册的信息对事件进行分类,得到各事件的事件处理函数集合。5.根据权利要求3所述的方法,其特征在于,步骤“根据注册的信息对事件进行分类得到各事件的事件处理函数集合”具体为:事件总线根据注册信息获取订阅事件的事件处理函数,并生成该事件订阅者的事件方法集合listEventMethod,该事件方法集合listEventMethod中包含该事件订阅者所有订阅事件的事件处理函数;所有事件订阅者的事件方法集合汇总为总事件订阅集合allListEventMethod;遍历总事件订阅集合allListEventMethod,根据事件类型进行分类,得到各个事件的事件处理函数集合。6.根据权利要求5所述的方法,其特征在于,步骤“遍历总事件订阅集合allListEventMethod,根据事件类型进行分类,得到各个事件的事件处理函数集合”具体为:使用for循环语句遍历总事件订阅集合allListEventMethod中的每一个元素,每个元素均表示事件的处理函数,每次获取其中一个元素;通过获取的每一个元素得到其中所包含的事件参数信息;根据事...

【专利技术属性】
技术研发人员:张磊
申请(专利权)人:武汉斗鱼网络科技有限公司
类型:发明
国别省市:湖北;42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1