一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种适用于Android应用内的数据总线设计方法

2022-07-06 07:54:41 来源:中国专利 TAG:

技术特征:
1.一种适用于android应用内的数据总线设计方法,其特征在于,数据总线的结构中包括:注册表和数据流表;所述注册表以组件引用为索引,每个注册节点维护一个组件引用的信息;所述注册表的结构包括:组件引用、标签列表、邮箱表、事件处理方法和优先级;所述优先级决定每个组件接收事件的顺序;所述标签表的作用是提供与注册组件关联的标签列表的一览表,为组件的注册、注销等管理操作提供一致性检查样本;所述邮箱表为每个组件提供邮箱,所述邮箱中的邮件包含的要素包括:标签、源组件和消息内容,标签用于标定邮件类型、源组件用于标定发送者;每个组件只能使用一个所述事件处理方法,用这一个事件处理方法处理所有事件消息,通过标签区分事件的类型和数据类型;事件处理方法的名称自定义,参数限定为3个,分别是标签、消息数据对象和源组件引用,其中源组件引用参数用于目标组件得到事件的发送者;所述数据流表以标签为索引,形成数据流表的基本结构,每个标签节点中包含组件表,各组件根据使用标签的优先级排列;所述组件表中的节点保存了所述注册表中注册节点的组件引用,复用了注册表中节点;基于所述注册表、所述数据流表,所述数据总线提供的操作包括:注册、注销、修改标签列表、事件消息发送和处理和邮箱消息发送和收取;组件使用所述数据总线时,为了保证正常运行必需使用的操作包括:注册、注销和事件消息处理操作,按照实际需要选择的操作包括:修改标签列表、事件消息发送和邮箱消息发送收取;基于所述注册表、所述数据流表实现的事件消息的分发,采用反射方式调用目标组件的事件处理方法方式分发;其中,目标组件的事件方法内不包括耗时代码;在非跨进程的场合,后台程序向ui主线程发送事件消息时,所述数据总线借助android系统的handler消息机制,通过handler消息机制切换到ui主线程中的handmessage()方法中,实现更新ui界面数据的操作;事件消息通过android提供的message消息类的obj成员携带传递,所述数据总线的结构中无需事件消息队列做缓冲。2.根据权利要求1所述一种适用于android应用内的数据总线设计方法,其特征在于:所述注册表基于哈希表实现,所述标签表基于哈希表实现,所述数据流表基于哈希表实现,所述组件表基于链表实现,所述邮箱表基于链表方式实现。3.根据权利要求1所述一种适用于android应用内的数据总线设计方法,其特征在于:所述注册的流程包括:待注册组件在注册操作时提供的注册信息包括:自身引用、优先级、使用的标签列表和事件处理方法的名称;进行所述注册操作时,定义事件处理方法,所述事件处理方法的参数包括: object类型的源组件引用参数、string类型的标签参数和object类型的消息参数;所述数据总线内得到所述注册信息后,检查待注册组件是否已经注册,如果已经注册则返回已注册信息;如果未注册则先创建注册节点,初始化待注册组件的节点并将组件信息加到节点中;然后根据待注册组件使用的标签,将待注册组件的注册节点挂接到数据流表中对应的标签节点下的组件表中;如果数据流表中无待注册组件的标签节点,则先在其中建立一个标签节点,再挂接待注册组件的注册节点;最后将注册节点加入到注册表中。
4.根据权利要求1所述一种适用于android应用内的数据总线设计方法,其特征在于:所述注销的流程包括:组件销时需提供自身引用;待注销组件将自身引用发往数据总线,数据总线内得到信息后,检查待注销组件是否已经注册,如果未注册则返回注销成功信息;如果已注册,获得待注销组件的注册节点,并从注册表中移除;然后根据待注销组件使用的标签列表,一一从数据流表中对应标签节点的组件表中摘除待注销组件的注册节点;其中,如果摘除待注销组件后,标签节点的组件列表无任何其它组件,则将待注销组件的标签节点从数据流表中摘除;数据流表处理完毕后,释放待注销组件的相关资源。5.根据权利要求1所述一种适用于android应用内的数据总线设计方法,其特征在于:所述修改标签列表的流程包括:组件在完成注册操作后,根据需要增减使用的标签,使组件能更灵活地控制需要响应的事件;有修改需求的组件将自己待修改标签需求发往数据总线,数据总线内得到修改标签信息后,先修改注册表中组件对应的标签列表;待修改标签需求包括:增加标签和减少标签;数据总线根据所述待修改标签需求中增加标签和减少标签,分别在数据流表中进行组件挂接和组件摘除操作,操作方式同注册流程和注销流程中的组件挂接和摘除操作;当组件提交的需求是减少标签时,在处理摘除组件操作过程中,仅清空邮箱中与减少标签对应的邮件,不释放邮箱。6.根据权利要求1所述一种适用于android应用内的数据总线设计方法,其特征在于:所述事件消息发送和处理流程包括:消息源组件发送事件消息;反射调用目标组件的事件处理方法来处理事件消息;消息源组件发送消息时,在事件消息发送流程中,需要提供的参数包括:标签、消息数据对象、组件自身引用和目标组件引用;数据总线内部通过标签在数据流表上得到使用消息源组件的标签的组件列表;如果消息源组件提供的参数中明确指定了目标组件,则只为目标组件分发消息,否则为组件列表中除消息源组件外的所有组件分发消息;接收到消息的目标组件在事件处理流程中,通过方法参数获得消息源组件的引用和事件消息,得到这些信息后就可以进行相应的处理。7.根据权利要求1所述一种适用于android应用内的数据总线设计方法,其特征在于:所述邮箱消息发送和收取流程:邮件发送组件发送邮件时,需要提供标签、消息数据对象、组件自身引用和目标组件引用参数;数据总线内部在数据流表上找到发邮件时参数中标定的标签和和标签对应的组件列表;如果邮件发送组件的参数中明确指定了目标组件,则只向目标组件投放邮件,否则向组件列表中除邮件发送组件外的所有组件投放邮件;邮件不触发执行事件处理方法的执行,而是由各组件主动去各自的邮箱中收取邮件;收取邮件时,各组件需要提供标签和组件自身引用参数,数据总线内部根据标签,从组件的邮箱中取出对应的邮件返回给组件,取出邮件后,将邮件从对应组件的邮箱中删除。8.根据权利要求1所述一种适用于android应用内的数据总线设计方法,其特征在于:
所述数据总线采用单例方式,即一个进程中只有一个单例。9.根据权利要求1所述一种适用于android应用内的数据总线设计方法,其特征在于:基于android环境实现时,组件以类为单位,使用所述数据总线的类就是一个组件。

技术总结
本发明提供的一种适用于Android应用内的数据总线设计方法,其在处理非跨进程的应用内通信时,采用无事件消息队缓冲列的设计,简化了本发明的数据总线的结构和运行环节,并减少了实现本发明数据总线时的代码量,提高了程序效率;同时,基于于反射方式、发送消息时立刻执行,消息传递速度更快,进一步提高了程序效率。主动分发事件消息时,立刻检索数据流表并反射调用目标组件的事件处理方法、将事件消息发给目标组件。与现有总线技术相比,本发明中无事件消息队列的设计,简化了数据总线的设计,使数据总线在运行上和实现上都具有较高的效率。数据总线在运行上和实现上都具有较高的效率。数据总线在运行上和实现上都具有较高的效率。


技术研发人员:李立亚 吴丽 张春燕 闾立新 周谢益 董宝庆 王振 于帅威 赵壮壮
受保护的技术使用者:无锡科技职业学院
技术研发日:2022.03.24
技术公布日:2022/7/5
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献