应用之间进行通信的方法和电子设备技术

技术编号:10182848 阅读:164 留言:0更新日期:2014-07-03 13:31
本发明专利技术公开了一种应用之间进行通信的方法和电子设备。该方法包括:在系统模块启动时启动设置于系统模块之中的回调对象管理单元;回调对象管理单元分别与回调者模块和注册回调者模块建立关联关系;回调对象管理单元接收回调者模块发送过来的通知对象,并根据与注册回调者模块建立的关联关系,查找通知对象所指向的注册回调者模块;如果查找得到存在通知对象所指向的注册回调者模块,回调对象管理单元则调用通知对象所指向的注册回调者模块对应的回调对象并进行相应处理。通过上述方式,本发明专利技术能够提高回调对象注册的稳定性,进而提高回调对象使用的可靠性。

【技术实现步骤摘要】
【专利摘要】本专利技术公开了一种应用之间进行通信的方法和电子设备。该方法包括:在系统模块启动时启动设置于系统模块之中的回调对象管理单元;回调对象管理单元分别与回调者模块和注册回调者模块建立关联关系;回调对象管理单元接收回调者模块发送过来的通知对象,并根据与注册回调者模块建立的关联关系,查找通知对象所指向的注册回调者模块;如果查找得到存在通知对象所指向的注册回调者模块,回调对象管理单元则调用通知对象所指向的注册回调者模块对应的回调对象并进行相应处理。通过上述方式,本专利技术能够提高回调对象注册的稳定性,进而提高回调对象使用的可靠性。【专利说明】应用之间进行通信的方法和电子设备
本专利技术涉及计算机
,特别是涉及一种应用之间进行通信的方法和电子设备。
技术介绍
在整个软件平台中,包括系统模块和用户模块。其中,系统模块作为软件平台的核心,支撑软件平台的正常运行,为不可或缺的模块。而用户模块并不是软件平台不可或缺的模块,其运行于软件平台之上,即使缺少用户模块也并不会影响到软件平台的正常运行,仅是该用户模块相应的功能缺失而已。在整个软件平台运行过程中,为了降低耦合度,绝大多数用户模块都被设计成相互独立的,但是各用户模块之间,或至少某几个用户模块之间具有联系。具体而言,有的用户模块需要知道另外某个或某几个用户模块某些状态的改变、事件发生等情况,进而在其自身内部做相应的处理,例如界面更新、数据处理等工作。通常,具有联系的用户模块之间通过消息、广播或者回调等几种方式作为其联系的纽带。其中,尤其以回调方式使用较多。参阅图1,系统模块10启动后各用户模块跟随系统模块10相继启动,其中一个用户模块作为回调者模块20其内部创建一个回调对象管理单元200,该回调对象管理单元200在其内部创建一个存储子单元并负责对其进行维护。其它用户模块作为注册回调者模块21将自己的接口函数地址注册到回调者模块20,回调者模块20将此回调对象加入到存储子单元。当回调者模块20有状态改变、事件发生等情况时,回调对象管理单元200就遍历整个存储子单元,找到其中对此情况感兴趣的回调对象,并调用该回调对象对应的接口函数,这样注册回调者模块21的相应处理在接口函数中即被执行。其中,回调对象管理单元200属于回调者模块20的一部分,其运行于回调者模块20中,并且其生命周期与回调者模块20的生命周期保持一致,即其随回调者模块20的启动而启动、随回调者模块20的终止而终止。这样的设计具有较好的优点:回调者模块20是非系统模块10,它并不影响系统模块10的平稳运行,在加上各用户模块之间,即回调者模块20和注册回调者模块21之间为独立性的设计,单个模块的出错、死掉或退出仅仅会影响其自身的正常运行,并不会其它模块的正常运行造成影响。然而,这样的设计具有严重的缺陷:因为在某些情况下,回调者模块20可能会出错、死掉或退出,该回调者模块20需要在其自身或系统模块10的干预下重新启动。回调者模块20就不能保证注册回调者模块21所注册的回调对象的稳定保存和持有。如果回调者模块20因某些情况运行出错,进行了重启,那么回调者模块20就会释放掉它所有的内存数据,其内部的回调对象管理单元200就会重新创建存储子单元,该存储子单元中没有回调对象,而此前已经注册过回调的模块对此情况并不知晓。对于这种情况,此前注册过的注册回调者模块21的接口函数永远也不会被调用到。
技术实现思路
本专利技术主要解决的技术问题是提供一种应用之间进行通信的方法和电子设备,能够借助系统模块的稳定性提高回调对象注册的稳定性,进而提高回调对象使用的可靠性。为解决上述技术问题,本专利技术采用的一个技术方案是:提供一种应用之间进行通信的方法,包括如下步骤:在系统模块启动时启动设置于系统模块之中的回调对象管理单元;回调对象管理单元分别与回调者模块和注册回调者模块建立关联关系;回调对象管理单元接收回调者模块发送过来的通知对象,并根据与注册回调者模块建立的关联关系,查找通知对象所指向的注册回调者模块;如果查找得到存在通知对象所指向的注册回调者模块,回调对象管理单元则调用通知对象所指向的注册回调者模块对应的回调对象并进行相应处理。其中,在系统模块启动时启动设置于系统模块之中的回调对象管理单元的步骤之后,包括:系统模块根据回调对象管理单元生成回调对象管理单元对象实例,回调对象管理单元对象实例创建回调对象链表,并初始化回调对象管理单元对象实例,其后,系统模块将回调对象管理单元对象实例添加到系统服务链表;回调者模块创建通知对象,自系统服务链表中获取回调对象管理单元对象实例,并将通知对象发送至回调对象链表,以建立与回调对象管理单元的关联关系;注册回调者模块创建回调对象,自系统服务链表中获取回调对象管理单元对象实例,将回调对象注册到回调对象链表,以建立与回调对象管理单元的关联关系。其中,注册回调者模块配置注册条件,注册回调者模块根据注册条件自系统服务链表中获取回调对象管理单元对象实例,并将其创建的回调对象注册到回调对象链表。其中,在将其创建的回调对象注册到回调对象链表的步骤中,包括:设置同步锁;将回调对象添加到回调对象链表的末端;清除同步锁。其中,在设置同步锁的步骤之后,包括:遍历回调对象链表,如果回调对象链表中不存在回调对象,将回调对象添加到回调对象链表的末端,并执行清除同步锁的步骤;如果回调对象链表中存在回调对象,直接执行清除同步锁的步骤。其中,在回调者模块创建通知对象的步骤之后、自系统服务链表中获取回调对象管理单元对象实例的步骤之前,包括:回调者模块配置通知条件,回调者模块根据通知条件自系统服务链表中获取回调对象管理单元对象实例。其中,在回调对象管理单元则调用通知对象所指向的注册回调者模块对应的回调对象并进行相应处理的步骤中,包括:设置同步锁;遍历回调对象链表,并依次执行通知对象所有相关联的回调对象中相应的函数或类实例;清除同步锁。其中,在回调对象管理单元则调用通知对象所指向的注册回调者模块对应的回调对象并进行相应处理的步骤之后,包括:注册回调者模块自系统服务链表中获取回调对象管理单元对象实例,并对其创建的回调对象进行反注册。其中,在自系统服务链表中获取回调对象管理单元对象实例的步骤之前,包括:判断回调对象链表中是否存在回调对象;如果存在,则执行自系统服务链表中获取回调对象管理单元对象实例的步骤;在对其创建的回调对象进行反注册的步骤中,包括:设置同步锁;遍历回调对象链表,将回调对象自回调对象链表中删除;清除同步锁。为解决上述技术问题,本专利技术采用的另一个技术方案是:提供一种应用之间进行通信的电子设备,包括:系统模块、设置于系统模块之中的回调对象管理单元以及至少两个用户模块,其中,至少一个用户模块作为回调者模块,其余用户模块作为注册回调者模块;其中,回调对象管理单元在系统模块启动时启动,并且,回调对象管理单元分别与回调者模块和注册回调者模块建立关联关系;回调对象管理单元接收回调者模块发送过来的通知对象,并根据与注册回调者模块建立的关联关系,查找通知对象所指向的注册回调者模块;如果查找得到存在通知对象所指向的注册回调者模块,回调对象管理单元则调用通知对象所指向的注册回调者模块对应的回调对象并进行相应处理。其中,电子设备是计算本文档来自技高网
...
应用之间进行通信的方法和电子设备

【技术保护点】
一种应用之间进行通信的方法,其特征在于,包括如下步骤:在系统模块启动时启动设置于所述系统模块之中的回调对象管理单元;所述回调对象管理单元分别与回调者模块和注册回调者模块建立关联关系;所述回调对象管理单元接收所述回调者模块发送过来的通知对象,并根据与所述注册回调者模块建立的关联关系,查找所述通知对象所指向的注册回调者模块;如果查找得到存在所述通知对象所指向的注册回调者模块,所述回调对象管理单元则调用所述通知对象所指向的注册回调者模块对应的回调对象并进行相应处理。

【技术特征摘要】

【专利技术属性】
技术研发人员:张明生周佳杜国楹
申请(专利权)人:北京壹人壹本信息科技有限公司
类型:发明
国别省市:北京;11

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

1