基于Android组件化的开发多业务动态组合方法及系统
技术领域
本发明涉及Android手机App开发框架领域,尤其涉及基于Android组件化的多业务动态组合开发解决方案和操作方法,具体为一种基于Android组件化的开发多业务动态组合方法及系统。
背景技术
随着移动互联网技术的蓬勃发展和智能手机的普及,人们对手机App功能要求越来越高。手机App开发者们在面对复杂业务需求如何架构开发,一直是一个行业难题。目前常用的技术手段有组件化和插件化开发,组件化开发就是将一个app分成多个模块,每个模块都是一个组件,开发的过程中我们可以让这些组件相互依赖或者单独调试部分组件等,但是最终发布的时候是将这些组件合并统一成一个apk,这就是组件化开发。插件化开发和组件化开发略有不用,插件化开发时将整个app拆分成很多模块,这些模块包括一个宿主和多个插件,每个模块都是一个apk(组件化的每个模块是个lib),最终打包的时候将宿主apk和插件apk分开或者联合打包。
然而随着业务的发展,同一App程序可能要兼容多个相似的业务(例如成人高等教育,自学考试,非学历培训等),这些业务又要求数据和服务相互独立,他们有相同的学习需求但是培养方案和考核方式各不相同。这就要求界面功能和显示菜单有相同也有不同。并且随着学期的开始和结束在同业务不同的阶段显示内容也不相同。若是利用现有的组件化开发方式,则需要为每个业务都开发一个App或者每个业务都单独的开发一个组件。这样虽然可以满足不同业务之间的差异化显示但是很难达到数据和服务相互独立,并且开发、维护成本较高,新功能的不断增加也会导致代码冗余越来越严重。另外,这种方式需要给用户创建多个账号,增加了用户的使用和学习成本。
经检索发现,公开号CN110580183A的中国专利于2019年12月17日公开了一种移动应用组件化实现方法,涉及移动端业务模块组件化的分包、配置及实施方法,具体包含如下步骤;拆分建设基础库模块;将源代码分业务模块拆分打包,生成独立组件;通过Android、iOS平台实现多模块组件支持和配置;完成模块组件间的跳转和通讯;配合服务端进行多组件的动态加载。该专利申请通过组件化的分包、配置解决当前业务开发中业务代码耦合严重,不方便维护的问题,但是其不能解决要求数据和服务相互独立,有相同的学习需求但是培养方案和考核方式各不相同的业务领域所存在的问题。
公开号CN111078199A的中国专利于2020年4月28日公开了一种Android中间件定制组件平台化的实现方案,具体实现方式如下:S1:将Android系统框架中与产品业务特性有关的中间件剥离为独立的组件单元,使其与Android系统框架保持相对独立;剥离的产品业务组件单元的集合构成中间件业务平台;S2:对从Android系统框架中独立出来的业务组件单元,根据产品开发集成编译需要,与Android系统建立相应的编译依赖关系。该专利申请通过构建中间件业务平台实现产品在多芯片平台、不同系统版本进行集成及定制开发,但不能实现数据和服务相互独立,不能解决新功能开发时的代码冗余问题。
公开号CN110399119A的中国专利于2019年11月1日公开了一种组件化构建方法,将软件代码按照业务特征封装为业务组件,并将软件代码按照功能特征封装为功能组件,将业务组件和功能组件添加到管理工具类中进行统一的调度。将业务对应的软件代码按照需求归纳为多个业务模块,业务模块通过管理工具类调度业务组件,以调用功能组件中的相应功能;将功能对应的软件代码按照需求归纳为多个功能模块,功能模块用于实现功能组件的相应功能的调用。该专利申请通过将每个业务模块作为一个独立的应用进行开发处理的方式来降低软件代码量,进而提高开发效率,但仍然不能够实现数据和服务相互独立,不能解决新功能开发时的代码冗余问题。
发明内容
为克服上述现有技术的不足,本发明提供一种基于Android组件化的开发多业务动态组合方法及系统,用于实现在同一App兼容多个业务且每个业务数据和服务相互独立,只用开发一套业务组件代码即可满足不同业务之间的差异化显示,减少代码冗余和维护成本。
根据本发明说明书的一方面,提供一种基于Android组件化的开发多业务动态组合方法,包括创建Main APP工程,搭建组件化开发框架,开发动态业务功能组件和开发核心管理组件,其中,搭建组件化开发框架进一步包括:
构建基础组件层,用于为基础业务功能组件层和动态业务功能组件层提供底层技术支持;
构建基础业务功能组件层,用于辅助动态业务功能组件层完成具体业务功能的实现,为各动态业务功能组件提供底层业务支持;
构建动态业务功能组件层,用于具体业务功能的显示和实现,包括构建动态业务模块功能组件和核心管理组件;
其中,构建动态业务模块功能组件包括根据业务功能需求进行各种功能模块划分并根据划分结果开发独立的业务功能组件;
构建核心管理组件包括构建业务控制管理组件、路由控制管理组件和显示控制管理组件;所述业务控制管理组件用于管理多业务功能,是整个动态业务功能组件层的入口和控制中心;所述路由控制管理组件用于处理动态调用和组件内部调用;所述显示控制管理组件用于进行页面和功能菜单的动态组件及显示。
上述技术方案中,通过创建Main APP工程用于启动APP并作为其他业务的载体;通过搭建组件化开发框架用于分别构建基础组件层、基础业务功能组件层和动态业务功能组件层,实现根据需求文档和设计图进行模块划分,并将每个模块功能开发为动态业务功能组件,达到在同一App兼容多个业务且每个业务数据和服务相互独立的效果;其中,构建基础组件层和基础业务功能组件层分别用于为动态业务功能组件层的实现提供底层技术支持和底层业务支持,构建动态业务功能组件层用于动态业务功能组件的开发及核心管理组件的开发;动态业务功能组件的开发根据业务功能需求进行,而核心管理组件则用于多业务的控制管理业务切换、动态业务组件之间的通信以及根据当前用户选择的业务动态生成界面显示。
上述技术方案能够使多个业务之间数据相互独立,一个用户账户可以同时拥有多个独立业务且数据相互独立。用户通过切换业务功能切换到不同业务,请求不同业务的API地址;并且,修改某一业务下的业务数据不会影响其他业务该功能相关数据,而某一业务到期也不会影响其他业务的正常使用。
作为进一步的技术方案,在当前业务发生变更时,所述业务控制管理组件通知基础业务功能组件层的业务API组件更改当前服务请求的token、API地址,同时通知显示控制管理组件更改显示控制,所述显示控制管理组件通知所有打开页面重新显示并重新通过业务API组件请求接口。
进一步地,所述显示控制管理组件用来进行页面和功能菜单的动态组建和显示。显示控制模块是启动页面将当前页面的key传入页面控制模块,页面控制模块根据当前登录状态和所选业务对当前页面的显示内容进行控制显示,如控制页面的子页面显示及内容,菜单显示包含菜单的显示文字图片,菜单的事件通过服务端动态配置路由地址和跳转参数本地封装后发生给路由控制器。
具体地,用户登录后服务端返回显示总模块树和用户对应的对业务列表(列表包含Token、API地址等),用户选择业务后会更改业务API组件中的Token,API地址,以此来访问不同业务数据。同时,更改业务后业务控制管理组件会发送事件通知,通知已打开的页面调用业务功能组建组件,业务功能组建组件通过页面显示模块编号和当前业务返回页面需要显示的模块数;当前页面拿到模块数后来进行新业务的页面显示和功能加载,以及动态菜单显示和动态路由绑定。
具体地,用户在触发了动态菜单的触发事件后,调用路由控制管理组件处理动态参数为路由控制器参数格式,发送跳转指令,路由控制器收到跳转指令调用内部方法找到对应的业务组件,业务功能组件加载业务功能并对应功能初始化,以此达到动态显示。
作为进一步的技术方案,所述路由控制管理组件进一步包括:发送路由组件Name和Action参数;根据Name和Action参数进行路由解析并依据解析结果调用业务功能组件;业务功能组件加载组件对应功能并初始化,返回结果函数。
作为进一步的技术方案,所述显示控制管理组件所采用的显示控制算法包括:通过传入页面模块编号获取当前页面当前业务显示列表树;与App总显示模块树进行与运算,递归生成需要显示的模块树和分支,每个显示分支包含显示菜单模块编号,动态显示顺序编号,动态显示菜单名称,动态绑定路由事件;如果页面模块编号为最顶层页面显示模块编号,则生成整个App的主页面功能模块树和二级子模块树,其他页面模块编号生成当前页面的功能模块树以及子页面和下一级模块树。
作为进一步的技术方案,所述方法进一步包括测试和打包发布。在组件开发完成后,使用自动化测试框架进行测试,然后进行代码混淆打包发布APP。
根据本发明说明书的一方面,提供一种基于Android组件化的开发多业务动态组合系统,所述系统包括工程创建模块、组件化开发框架构建模块、动态业务功能组件开发模块和核心管理组件开发模块,其中,
所述组件化开发框架构建模块包括构建基础组件层、基础业务功能组件层和动态业务功能组件层;
所述基础组件层,用于为基础业务功能组件层和动态业务功能组件层提供底层技术支持;
所述基础业务功能组件层,用于辅助动态业务功能组件层完成具体业务功能的实现,为各动态业务功能组件提供底层业务支持;
所述动态业务功能组件层,用于具体业务功能的显示和实现,包括动态业务模块功能组件和核心管理组件;
所述动态业务模块功能组件包括根据业务功能需求进行各种功能模块划分并根据划分结果开发独立的业务功能组件;所述核心管理组件包括构建业务控制管理组件、路由控制管理组件和显示控制管理组件;所述业务控制管理组件用于管理多业务功能,是整个动态业务功能组件层的入口和控制中心;所述路由控制管理组件用于处理动态调用和组件内部调用;所述显示控制管理组件用于进行页面和功能菜单的动态组件及显示。
上述技术方案中,基础组件层主要提供基础服务,为基础基础业务功能组件、动态业务功能组件、核心管理组件组提供底层的技术支持。基础业务功能组件为动态业务功能组件、核心管理组件组提供底层业务支持。动态业务功能组件是具体业务的功能显示和实现。核心管理组件组通过其下的业务控制管理组件、路由控制管理组件、显示控制管理组件在基础组件和基础业务功能组件的底层技术和底层业务支撑下,通过动态业务功能组件具体呈现,从而达到一种基于Android组件化的开发多业务动态组合解决方案,实现在同一App兼容多个业务且每个业务数据和服务相互独立,只用开发一套业务组件代码即可满足不同业务之间的差异化显示,减少代码冗余和维护成本。
作为进一步的技术方案,所述动态业务模块功能组件包括多个业务功能组件,多个所述业务功能组件之间相互独立并通过路由控制管理组件进行通信。动态业务功能组件层分为两部分,一部分为动态业务功能组件这部分是根据需求文档和设计图进行组件化开发,各组件生成自己的路由清单注册到路由管理控制器中。各组件相互独立通过路由控制管理器转发进行通信。另一部分为管理控制相关组件包含业务控制管理组件、路由控制管理组件、显示控制管理组件。
进一步地,所述动态业务功能组件可包括首页组件、学习组件、我的组件、课堂组件、消息组件、设置组件、商城组件、HTML5组件、登录/注册组件、订单组件、其他组件,均为预开发App的具体功能业务组件,其他项目可根据自己业务需求自主开发组件。
进一步地,所述业务控制管理组件用来管理多业务功能,是整个动态业务功能组建的入口和控制中心。在当前业务更改/变更后用来通知业务组件更改Token,API地址和各个功能页面更改当前页面显示和功能变更。
所述路由控制管理组件,根据业务功能需求和设计文档进行的各种功能模块划分后开发的一个个独立的功能组件,每个功能组件都有自己的路由清单。这些路由清单通过路由控制管理组件进行组件之间的通信。路由管理控制器组件用来处理动态调用和App组件内部调用,通过发送路由组件Name和Action参数,路由解析根据Name和Action参数调用业务功能组件,业务功能组件加载业务功能组件对应功能并初始化,调用结果返回。业务组件完成路由响应并返回给Main App。
所述显示控制管理组件,主要用来进行页面和功能菜单的动态组建和显示。显示控制模块是启动页面将当前页面的key传入页面控制模块,页面控制模块根据当前登录状态和所选业务对当前页面的显示内容进行控制显示,如控制页面的子页面显示及内容,菜单显示包含菜单的显示文字图片,菜单的事件通过服务端动态配置路由地址和跳转参数本地封装后发生给路由控制器。
作为进一步的技术方案,所述基础业务功能组件层包括业务API组件;公共业务组件;视频组件;扫码能力组件;推送能力组件;分享能力组件;支付能力组件。
具体地,所述业务API组件,主要用于提供所有业务所需的API接口封装,API请求地址管理,API请求头封装;当用户切换业务修改当前API请求地址和API请求头封装。所述公共业务组件,主要用于业务组件中各个业务的数据模型,公共方法。所述视频组件,用于提供视频播放,直播课,实时课堂的支持,对商城组件中的商品视频播放支持等。所述扫码能力组件,用于条形码/二维码扫码、解码、生成二维码等功能。所述推送能力组件,用于提供第三方推送服务。所述分享能力组件,用于提供分享内容到第三方和第三方授权登录功能。所述支付能力组件,用于提供第三方支付功能。
作为进一步的技术方案,所述业务API组件用于提供所有业务所需的API接口封装、API请求地址管理和/或API请求头封装;当用户切换业务,则修改当前API请求地址和API请求头封装。
基础业务功能组件层主要是辅助动态业务功能组件层完成复杂业务功能的实现、辅助业务控制管理组件进行业务切换、辅助显示控制管理组件进行数据刷新、抽出公共功能组件、对象、方法、接口等,使得动态业务功能组件层更加专注于动态显示和页面控制。特别是基础业务功能组件中的业务API组件和公共业务组件业务API组件为整个动态业务功能组件层提供API接口封装,API管理控制等。当前业务发生变更时,核心管理组件组中的业务控制管理组件会发出两个通知,一是通知业务API组件更改当前服务请求的Token,API地址等。二是通知显示控制管理组件更改显示控制,显示控制组件会通知所有打开页面,重新显示和重新通过业务API组件请求接口;公共业务组件为整个动态业务功能组件层提供公共数据对象和公共方法,为动态业务功能组件直接的相关通讯提供标准的数据对象,方便不同功能组件相同数据对象的传输。同时提供的公共处理方法,减少相同算法在不同动态业务功能组件的实现,减少代码冗余,方便修改和维护。
作为进一步的技术方案,所述基础组件层包括网路服务组件;基础工具类组件;基础UI组件;日志组件;事件总线组件;本地数据存储组件;路由服务组件。
具体地,所述网络服务组件,包含Http请求网络访问工具,多线程上传与下载管理池,多媒体文件上传与下载。所述基础工具类组件,包含字符串工具,日期工具,文件工具,加密/解密工具。所述基础UI组,件包含常用的UI控件,List列表、图片轮播、图形报表、日历选择器、Tab滑动控件等。所述日志组件,包含Log处理函数,Log显示控制函数。所述事件总线组件,基于EventBus事件总线的封装函数,用于发送/接收/管理事件消息的封装。所述本地数据存储组件,包含文件存储、SharedPreferences、SQLite数据库存储。所述路由服务组件,路由服务通信的基础框架。还包括其他组件;如图片选择,拍照等未单独列表出的其他基础功能组件。
基础组件层为整个项目框架的底层也是基础,为核心控制管理组件组提供了实现的保障。业务控制管理组件和显示控制管理组件以及各个业务组件都是通过事件总线组件进行消息的接收和发送,没有事件总线组件的底层支持业务控制管理组件和显示控制管理组件将不能完成相应的功能。路由服务组件为路由控制管理组件提供了基础的组件自动注册,跨组件调用等。
与现有技术相比,本发明的有益效果在于:
(1)本发明提供一种方法,通过创建Main APP工程用于启动APP并作为其他业务的载体;通过搭建组件化开发框架用于分别构建基础组件层、基础业务功能组件层和动态业务功能组件层,实现根据需求文档和设计图进行模块划分,并将每个模块功能开发为动态业务功能组件,达到在同一App兼容多个业务且每个业务数据和服务相互独立的效果;其中,构建基础组件层和基础业务功能组件层分别用于为动态业务功能组件层的实现提供底层技术支持和底层业务支持,构建动态业务功能组件层用于动态业务功能组件的开发及核心管理组件的开发;动态业务功能组件的开发根据业务功能需求进行,而核心管理组件则用于多业务的控制管理业务切换、动态业务组件之间的通信以及根据当前用户选择的业务动态生成界面显示。
(2)本发明提供一种系统,其中,基础组件层主要提供基础服务,为基础基础业务功能组件、动态业务功能组件、核心管理组件组提供底层的技术支持。基础业务功能组件为动态业务功能组件、核心管理组件组提供底层业务支持。动态业务功能组件是具体业务的功能显示和实现。核心管理组件组通过其下的业务控制管理组件、路由控制管理组件、显示控制管理组件在基础组件和基础业务功能组件的底层技术和底层业务支撑下,通过动态业务功能组件具体呈现,从而达到一种基于Android组件化的开发多业务动态组合解决方案,实现在同一App兼容多个业务且每个业务数据和服务相互独立,只用开发一套业务组件代码即可满足不同业务之间的差异化显示,减少代码冗余和维护成本。
(3)本发明实现了数据独立,能够使多个业务之间数据相互独立,一个用户账户可以同时拥有多个独立业务且数据相互独立。用户通过切换业务功能切换到不同业务,请求不同业务的API地址;并且,修改某一业务下的业务数据不会影响其他业务该功能相关数据,而某一业务到期也不会影响其他业务的正常使用。
(4)本发明实现了节约成本,只需要开发一个App抽取所有业务的功能组件,根据用户的当前业务和显示模块动态组合页面功能即可实现对业务需求的对接,新业务添加只需要配置相关功能解决方案,显示模块即可完美兼容,不需要重新开发App功能和发布版本,减少开发成本,维护成本,架构成本,减少代码冗余,降低耦合度,方便后期功能拓展。
(5)本发明实现了易于管理,管理端通过修改不同业务下的显示模块可随时控制App页面显示和功能权限,可以精细化管理同一账号不同业务的页面显示和功能权限同时可以精确控制每位用户不同时期的页面显示及功能控制,满足每位用户的个性化功能显示。
附图说明
图1为根据本发明实施例的方法流程图。
图2为根据本发明实施例的系统的整体架构图。
图3为根据本发明实施例的业务控制管理组件的示意图。
图4为根据本发明实施例的路由控制管理组件的示意图。
图5为根据本发明实施例的业务功能组建系统的示意图。
图6为根据本发明实施例的模块树结构图。
具体实施方式
以下将结合附图对本发明各实施例的技术方案进行清楚、完整的描述,显然,所描述发实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施例,都属于本发明所保护的范围。
如图1所示为一种基于Android组件化开发的多业务动态功能组合方法的整体开发流程图,该方法主要包含创建Main App工程,组件化开发框架搭建,动态业务功能组件开发,核心管理组件组开发,测试,打包发布。具体开发步骤如下:
1.创建Main App工程;Main App工程主要是一个空壳工程不涉及具体业务模块和框架,起到启动App和作为其他业务的载体。
2.组件化开发框架搭建;组件化开发框架主要是整个App项目个框架,也是核心,运行在Android API层之上。
3.动态业务功能组件开发;动态业务功能组件开发是根据业务功能需求进行的各种功能模块划分后开发的一个个独立的模块功能组件,每个模块有自己的路由清单。然后通过路由控制管理组件进行组件之间的通信。
4.核心管理组件组开发;核心管理组件组开发用于用户多业务的控制管理业务切换和用于管理动态业务组件之间的通信和根据当前用户选择的业务动态生成界面及功能。
5.测试;使用自动化测试框架进行测试。
6.打包发布;进行代码混淆打包发布App。
如图2所示为本发明系统的整体架构图,分为基础组件层、基础业务功能组件层、动态业务功能组件层。动态业务功能组件层包含两大部分一部分为动态业务功能组件的子功能模块组件,另外一部分为核心管理组件组。核心管理组件组分为业务控制管理组件、路由控制管理组件、显示控制管理组件。
基础组件层为整个项目框架的底层也是基础。为本发明的核心控制管理组件组提供了实现的保障。业务控制管理组件和显示控制管理组件以及各个业务组件都是通过事件总线组件进行消息的接收和发送,没有事件总线组件的底层支持业务控制管理组件和显示控制管理组件将不能完成相应的功能。路由服务组件为路由控制管理组件提供了基础的组件自动注册,跨组件调用等。
基础组件层包含网络服务组件、基础工具类组件、基础UI组件、日志组件、事件总线组件、本地数据存储组件、路由服务组件以及其他组件。
网络服务组件;包含Http请求网络访问工具,多线程上传与下载管理池,多媒体文件上传与下载。
基础工具类组件;包含字符串工具,日期工具,文件工具,加密/解密工具。
基础UI组;件包含常用的UI控件,List列表、图片轮播、图形报表、日历选择器、Tab滑动控件等。
日志组件;包含Log处理函数,Log显示控制函数。
事件总线组件;基于EventBus事件总线的封装函数,用于发送/接收/管理事件消息的封装。
本地数据存储组件;包含文件存储、SharedPreferences、SQLite数据库存储。
路由服务组件;路由服务通信的基础框架。
其他组件;如图片选择,拍照等未单独列表出的其他基础功能组件。
基础业务功能组件层主要是辅助动态业务功能组件层完成复杂业务功能的实现、辅助业务控制管理组件进行业务切换、辅助显示控制管理组件进行数据刷新、抽出公共功能组件、对象、方法、接口等,使得动态业务功能组件层更加专注于动态显示和页面控制。特别是基础业务功能组件中的业务API组件和公共业务组件业务API组件为整个动态业务功能组件层提供API接口封装,API管理控制等。当前业务发生变更时,核心管理组件组中的业务控制管理组件会发出两个通知,一是通知业务API组件更改当前服务请求的Token,API地址等。二是通知显示控制管理组件更改显示控制,显示控制组件会通知所有打开页面,重新显示和重新通过业务API组件请求接口;公共业务组件为整个动态业务功能组件层提供公共数据对象和公共方法,为动态业务功能组件直接的相关通讯提供标准的数据对象,方便不同功能组件相同数据对象的传输。同时提供的公共处理方法,减少相同算法在不同动态业务功能组件的实现,减少代码冗余,方便修改和维护。基础业务功能组件层包含业务API组件、公共业务组件、视频组件、扫码能力组件、推送能力组件、分享能力组件、支付能力组件、其他组件。
业务API组件;主要用于提供所有业务所需的API接口封装,API请求地址管理,API请求头封装。当用户切换业务修改当前API请求地址和API请求头封装。
公共业务组件;主要用于业务组件中各个业务的数据模型,公共方法。
视频组件;用于提供视频播放,直播课,实时课堂的支持,对商城组件中的商品视频播放支持等。
扫码能力组件;用于条形码/二维码扫码、解码、生成二维码等功能。
推送能力组件;用于提供第三方推送服务。
分享能力组件;用于提供分享内容到第三方和第三方授权登录功能。
支付能力组件;用于提供第三方支付功能。
动态业务功能组件层分为两部分,一部分为动态业务功能组件这部分是根据需求文档和设计图进行组件化开发,各组件生成自己的路由清单注册到路由管理控制器中。各组件相互独立通过路由控制管理器转发进行通信。另一部分为管理控制相关组件包含业务控制管理组件、路由控制管理组件、显示控制管理组件。
动态业务功能组件:本发明的整体架构图中的首页组件、学习组件、我的组件、课堂组件、消息组件、设置组件、商城组件、HTML5组件、登录/注册组件、订单组件、其他组件均为本发明预开发App的具体功能业务组件,其他项目可根据自己业务需求自主开发组件。
业务控制管理组件:业务控制管理组件用来管理多业务功能,是整个动态业务功能组建的入口和控制中心。当当前业务更改/变更后用来通知业务组件更改Token,API地址和各个功能页面更改当前页面显示和功能变更。
路由控制管理组件:根据业务功能需求和设计文档进行的各种功能模块划分后开发的一个个独立的功能组件,每个功能组件都有自己的路由清单。这些路由清单通过路由控制管理组件进行组件之间的通信。路由管理控制器组件用来处理动态调用和App组件内部调用,通过发送路由组件Name和Action参数,路由解析根据Name和Action参数调用业务功能组件,业务功能组件加载业务功能组件对应功能并初始化,调用结果返回。业务组件完成路由响应并返回给Main App。
显示控制管理组件:主要用来进行页面和功能菜单的动态组建和显示。显示控制模块是启动页面将当前页面的key传入页面控制模块,页面控制模块根据当前登录状态和所选业务对当前页面的显示内容进行控制显示,如控制页面的子页面显示及内容,菜单显示包含菜单的显示文字图片,菜单的事件通过服务端动态配置路由地址和跳转参数本地封装后发生给路由控制器。
App壳工程;App壳工程主要是一个空壳工程不涉及具体业务模块和框架,起到启动App和作为其他业务的载体的组件集成功能
本发明的基础组件层主要提供基础服务,为基础基础业务功能组件、动态业务功能组件、核心管理组件组提供底层的技术支持。基础业务功能组件为动态业务功能组件、核心管理组件组提供底层业务支持。动态业务功能组件是具体业务的功能显示和实现。核心管理组件组通过其下的业务控制管理组件、路由控制管理组件、显示控制管理组件在基础组件和基础业务功能组件的底层技术和底层业务支撑下,通过动态业务功能组件具体呈现,从而达到一种基于Android组件化的开发多业务动态组合解决方案。
如图3所示为本发明的业务控制管理组件。业务控制管理组件用来管理多业务功能和业务切到功能具体步骤如下:
1.用户登录账户后返回App总模树(数据结构如图6)和多业务列表信息包含每个业务Token、API地址等信息。
2.选择一种业务后获取当前业务的显示列表。
3.调用项目整体架构图(图2)中的业务API组件更改网络请求的Token,API地址,请求头等信息。
4.发送事件总线消息通知所有当前已经打开的页面调用业务功能组建组件。
5.业务功能组建组件根据每个页面key重新显示界面UI,重新绑定路由跳转事件等。
6.若业务控制管理组件接收到切换业务请求,获取要切换业务的Token、API地址等参数进行切换业务,
7.切换业务步骤同上2到5。
如图4所示为本发明的路由管理组件,路由控制管理组件主要功能是用来控制管理内部组件之间的通信以及用来处理动态路由请求。调用App组件功能具体步骤如下。
1.通过本发明的整体架构图(图2)中基础组件层中的路由服务组件框架自动将(图2)动态业务功能组件中的各个功能组件路由清单自动注册到路由控制器的路由队列中。
2.App内部组件发出路由请求。
3.调用路由控制管理组件中的封装参数函数方法,将请求转换为路由服务组件需要的跳转参数格式。
4.发送跳转指令,路由控制器收到跳转指令调用内部方法。
5.路由控制器将接收到的的Name和Action参数,进行参数校验参数。
6.参数无误,根据参数调用路由队列中业务功能组件。
7.业务功能组件加载业务功能并对应功能初始化,同时调用加工返回结果函数,业务组件完成路由响应并返回。
8.步骤5如果参数错误,直接调用加工返回结果函数返回响应,
9.动态路由请求通过动态路由函数把服务端的Json数据处理成路由组件需要的参数和格式。其他步骤同上步骤3到步骤8。
如图5所示为本发明的业务功能组建系统:主要用来进行页面和功能菜单的动态组建和显示系统和动态绑定路由跳转事件。步骤如下:
1.整体架构图(图2)的动态业务功能组件中的每个动态业务功能组件在收到路由功能请求后根据当前业务的路由清单找到对应页面加载并初始化。
2.页面加载初始化后传入当前页面模块编号作为参数到显示控制算法。
3.显示控制算法根据当前用户选择的业务找到对应页面显示列表和子列表。如果用户未登录使用默认显示列表,生成显示模块数。
4.显示模块数根据当前页面是否有子页面进行显示,有子页面传入子页面模块编号显示控制算法中生成显示模块数,以此递归直到子页面结束,将子页面装载到上层父节点页面。
5.调用动态菜单显示函数绑定动态路由跳转事件。
6.其他功能显示页面加载完成。
显示控制算法:显示控制算法通过传入页面模块编号获取当前页面当前业务显示列表树与App总显示模块树进行与运算递归生成需要显示的模块树和分支,每个显示分支包含显示菜单模块编号,动态显示顺序编号,动态显示菜单名称,动态绑定路由事件。如果页面模块编号为最顶层页面显示模块编号则生成整个App的主页面功能模块树和二级子模块树,其他页面模块编号生成当前页面的功能模块树以及子页面和下一级模块树。
动态菜单显示函数:是将动态显示算法中的菜单也View事件进行绑定,触发相应的View事件即可发送动态路由请求
如图6所示为本发明的模块数结构图:模块树主要用来控制整个动态显示的结构和显示内容。模块树的顶层节点为整个结构的开端,包含主模块结构。每个模块树节点包含该模块显示名称,动态显示菜单列表,模块编号,动态显示菜单名称,动态绑定路由事件。每个动态显示菜单包含动态显示顺序编号,动态显示菜单名称,动态绑定路由事件。
在本说明书的描述中,参考术语“一个实施方式”、“某些实施方式”、“示意性实施方式”、“示例”、“具体示例”、或“一些示例”等的描述意指结合所述实施方式或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施方式或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施方式或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施方式或示例中以合适的方式结合。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案。