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

一种车载APP模块间消息解耦的实现方法及系统与流程

2022-04-14 04:06:46 来源:中国专利 TAG:

一种车载app模块间消息解耦的实现方法及系统
技术领域
1.本发明属于车载app技术领域,更具体涉及一种车载app模块间消息解耦的实现方法及系统。


背景技术:

2.车载系统是用户和车载硬件的接口,同时也是车载硬件和上层软件的接口。车机操作系统的功能包括管理车载系统的硬件、软件及数据资源,控制程序运行,改善人机界面,为上层软件提供支持。而车载app利用车载系统的资源,将接收到数据、信号、音频、视频最大限度地发挥作用,提供各种形式的用户界面(ui),使驾驶员有一个良好的驾驶环境,并有效的提供辅助驾驶、半自动驾驶、甚至自动驾驶。
3.目前,因车载系统的特殊性,方便用户快速找到各种操作的入口,大量业务功能都集成launcher app(安卓系统桌面启动器)中。因此同一个app中会集成车载系统的大部分功能,大量业务代码集成在一个app中,且需要大量开发人员同时开发,因此有必要对app进行分层分模块开发设计,需要避免其他人的修改,影响当前模块的编译,降低开发效率。
4.目前软件开发领域已有模块间解耦的各种实践,根据中国发明cn202110532547.6 《app数据处理方法、装置及移动终端》、 cn201810847825.5 《一种用于家政app开发的方法》和cn201610559480.4《业务组件化方法及系统》所述,目前已有的模块间解耦的开发方案,更多的是使用组件化技术实现android开发中模块间解耦问题,组件间通信采用的技术是依赖倒置或者是uri(统一资源定位符)的方式实现。但模块间使用统一接口进行消息分发,通过参数完成消息传递,以此实现解耦的方式,目前还没有相关的技术。


技术实现要素:

5.为解决上述问题,本发明提供了一种车载app模块间消息解耦的实现方法及系统,在模块间调用时,可以通过同一个接口不同的参数完成具体的调用,最大程度的保证接口调用的可扩展性,避免多人合作开发时模块间的修改而造成大量编译问题。
6.为了解决上述技术问题,本发明采用的技术方案是这样的:一种车载app模块间消息解耦的实现方法,包括以下步骤,s1、将车载app分为供用户操作的ui层和用于提供多种服务的业务逻辑层;s2、在ui层和业务逻辑层之间搭设消息调用框架;s3、业务逻辑层向消息调用框架注册其提供的服务;s4、ui层向消息调用框架注册各服务的消息监听;s5、调用服务:用户通过操作ui层调用所需服务时,向消息调用框架发送调用消息,所述消息调用框架将该调用消息转发至业务逻辑层中的对应服务进行处理,并将处理完成后的数据通过消息调用框架返回ui层,完成服务调用;s6、消息监听:当业务逻辑层的服务数据发生变更时,向消息调用框架发送通知,消息调用框架将该通知发送给ui层的所有监听者,完成ui层的消息监听。
7.作为优化,所述消息调用框架包括,服务中心,包括服务注册模块、取消服务注册模块、判断模块、调用服务模块和服务接口模块,分别用于服务注册、取消服务注册、判断服务是否存在、调用服务和提供服务接口;消息中心,包括通知监听注册模块、移除通知监听模块和发送通知模块,分别用于通知监听注册、移除通知监听和发送通知。
8.作为优化,所述服务注册模块包括一个服务的容器,所有需要暴露的服务均注册在该容器中。
9.作为优化,所述服务通过将服务名称和服务相绑定的方式进行服务注册。
10.作为优化,所述消息调用框架中的调用服务包括以下步骤,s501、服务中心接收ui层发来的调用消息,通过服务名称在容器中找到对应的服务;s502、将调用方法名称、调用参数和回调传递给该服务;s503、该服务通过调用方法名称和调用参数完成服务调用;s504、完成后,通过回调将调用结果回调给ui层。
11.作为优化,所述服务的调用消息均通过服务中心的服务接口模块传递至该服务。
12.作为优化,所述监听注册模块包括一个通知的容器,所有通知的监听器均注册在该容器中。
13.作为优化,所述通知通过将通知名称和监听器相绑定的方式进行监听注册。
14.作为优化,所述业务逻辑模块需要向ui层发送通知时,通过发送通知模块发送通知,所有绑定到该通知名称对应的事件类型的监听器都能收到通知。
15.本发明还提供了一种车载app模块间消息解耦的实现系统,包括,ui层,用于与用户交互;业务逻辑层,用于提供多种服务的逻辑处理;消息调用框架,分别与ui层和业务逻辑层连接,用于将ui层发送的服务调用消息向业务逻辑层转发和将业务逻辑层的通知向ui层转发;其包括,服务中心,包括服务注册模块、取消服务注册模块、判断模块、调用服务模块和服务接口模块,分别用于服务注册、取消服务注册、判断服务是否存在、调用服务和提供服务接口;消息中心,包括通知监听注册模块、移除通知监听模块和发送通知模块,分别用于通知监听注册、移除通知监听和发送通知。
16.与现有技术相比,本发明具有如下优点:本发明提供一种通用的模块间消息解耦的开发框架,可以有效解决开发过程中模块间调用的问题,模块间通过少量的几个接口进行通信,接口可扩展性好。不同模块单独开发维护和编译,模块升级不修改接口调用方式,只扩展接口传输内容。本发明的模块间调用,均通过消息调用框架完成,app整体分为ui层和业务逻辑层。ui层不直接调用业务逻辑层,统一通过消息调用框架进行转发;ui层调用业务逻辑层的服务时,可统一通过一个异步接口进行调用,具体调用的服务通过接口的参数进行控制;
ui层可以向消息调用框架注册需要监听的消息类型,当业务逻辑层有数据变更等情况时,通过通知的方式向ui层发送消息;ui层和业务逻辑层两个模块之间完全解耦。模块可独立进行开发和维护,接口增加只需要扩展参数的内容即可,无需修改接口和参数类型。
17.本发明,开发人员只需要专注于各自维护的模块,且增加或者修改接口时不需要更改调用方式,在多人共同开发过程中,避免因接口频繁修改造成的大量编译问题,可以有效地提高开发效率。
附图说明
18.图1为本发明整体架构图;图2为本发明中消息调用框架的关键类图。
具体实施方式
19.下面将结合附图及实施例对本发明作进一步说明。
20.实施例:参见图1-图2,一种车载app模块间消息解耦的实现方法,包括以下步骤,s1、将车载app分为供用户操作的ui层和用于提供多种服务的业务逻辑层。其中ui层只包含ui相关的绘制和控制代码。业务逻辑层包含所有的业务逻辑代码。
21.s2、在ui层和业务逻辑层之间搭设消息调用框架;s3、业务逻辑层向消息调用框架注册其提供的服务;s4、ui层向消息调用框架注册各服务的消息监听;s5、调用服务:用户通过操作ui层调用所需服务时,向消息调用框架发送调用消息,所述消息调用框架将该调用消息转发至业务逻辑层中的对应服务进行处理,并将处理完成后的数据通过消息调用框架返回ui层,完成服务调用。具体的,ui层通过消息调用框架提供的接口调用服务,消息调用框架通过参数的内容,转发到对应的服务进行处理,处理完成后将数据返回给ui层。
22.s6、消息监听:当业务逻辑层的服务数据发生变更时,向消息调用框架发送通知,消息调用框架将该通知发送给ui层的所有监听者,完成ui层的消息监听。
23.所述消息调用框架包括,服务中心,包括服务注册模块、取消服务注册模块、判断模块、调用服务模块和服务接口模块,分别用于服务注册、取消服务注册、判断服务是否存在、调用服务和提供服务接口;消息中心,包括通知监听注册模块、移除通知监听模块和发送通知模块,分别用于通知监听注册、移除通知监听和发送通知。
24.本发明还提供了一种车载app模块间消息解耦的实现系统,包括,ui层,用于与用户交互;业务逻辑层,用于提供多种服务的逻辑处理;消息调用框架,分别与ui层和业务逻辑层连接,用于将ui层发送的服务调用消息向业务逻辑层转发和将业务逻辑层的通知向ui层转发;其包括,
服务中心,包括服务注册模块、取消服务注册模块、判断模块、调用服务模块和服务接口模块,分别用于服务注册、取消服务注册、判断服务是否存在、调用服务和提供服务接口;消息中心,包括通知监听注册模块、移除通知监听模块和发送通知模块,分别用于通知监听注册、移除通知监听和发送通知。
25.具体的,如图2所示,caservicecenter是服务中心、caeventcenter是通知中心。
26.caservicecenter中包含一个服务的容器servicemap,所有需要暴露的服务均注册在该容器中。
27.registerservice:所有服务通过该方法进行注册,将服务名称和服务绑定,绑定成功后,其他模块可以通过服务名称对该服务进行调用。
28.unregisterservice:取消服务注册,服务取消注册后,其他模块无法通过绑定的服务名称进行调用。
29.hasservice:判断是否有某个服务。
30.callservice:调用服务,服务中心通过servicename(服务名称)在servicemap(容器)找到对应的service(服务),然后将methodname(方法名称)和params(参数),callback(回调)传递给service。service根据methodname和params完成服务调用,对消息进行处理后,通过callback将结果回调给调用方。
31.icaservice:所有需要暴露的服务,都需要实现该接口的callmethod方法,以便消息调用可以从服务中心传递到该服务。
32.caeventcenter中包含一个通知的容器eventmap,所有通知的监听器,都需要注册在该容器中。
33.addeventlistener:所有监听器通过该方法添加监听,将通知名称和监听器绑定,绑定成功后,该监听器可以收到所有该事件类型的通知。
34.removeeventlistener:移除通知监听,移除监听器后,该监听器无法收到该事件类型的所有通知。
35.postevent:发送通知,业务逻辑层需要向ui层发送通知时,调用该方法发送通知,所有绑定到该事件类型的监听器都能收到通知。
36.消息调用框架通过caeventcenter和caservicecenter完成消息调用和事件的通知,实现模块间消息的解耦。
37.本发明提供一种通用的模块间消息解耦的开发框架,可以有效解决开发过程中模块间调用的问题,模块间通过少量的几个接口进行通信,接口可扩展性好。不同模块单独开发维护和编译,模块升级不修改接口调用方式,只扩展接口传输内容。本发明的模块间调用,均通过消息调用框架完成,app整体分为ui层和业务逻辑层。ui层不直接调用业务逻辑层,统一通过消息调用框架进行转发;ui层调用业务逻辑层的服务时,可统一通过一个异步接口进行调用,具体调用的服务通过接口的参数进行控制;ui层可以向消息调用框架注册需要监听的消息类型,当业务逻辑层有数据变更等情况时,通过通知的方式向ui层发送消息;
ui层和业务逻辑层两个模块之间完全解耦。模块可独立进行开发和维护,接口增加只需要扩展参数的内容即可,无需修改接口和参数类型。
38.本发明,开发人员只需要专注于各自维护的模块,且增加或者修改接口时不需要更改调用方式,在多人共同开发过程中,避免因接口频繁修改造成的大量编译问题,可以有效地提高开发效率。
39.最后需要说明的是,以上实施例仅用以说明本发明的技术方案而非限制技术方案,本领域的普通技术人员应当理解,那些对本发明的技术方案进行修改或者等同替换,而不脱离本技术方案的宗旨和范围,均应涵盖在本发明的权利要求范围当中。
再多了解一些

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

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

相关文献