一种基于ContentProvider的App封装解耦方法、系统、设备和存储介质与流程
未命名
10-19
阅读:102
评论:0
一种基于contentprovider的app封装解耦方法、系统、设备和存储介质
技术领域
1.本发明涉及计算机软件开发应用的技术领域,具体地,主要涉及一种基于contentprovider的app封装解耦方法。
背景技术:
2.由于扫地机等设备的功能更新迭代较快,执行相关功能的业务组件更新频繁。在现有的app中,app主体与组件之间强关联,例如,参照图1,在app主体中输入扫地机产品的id,app主体为了将与此id相对应的标签传递给相应的业务组件,会直接调用相应业务组件中的函数。
3.在产品更新迭代较快的背景下,根据业务需求,会直接删除某些产品的业务组件,或者改动业务组件中的函数,而由于app主体与组件之间的强关联性,只要有业务组件被删除或者其中的函数发生改动,整个app的代码也要做相应的改动,以保证与业务组件的兼容性,这样会带来很多不必要的代码改动风险。
技术实现要素:
4.针对现有技术的不足,本发明提供一种基于contentprovider的app封装解耦方法、系统、设备和存储介质,以实现app主体和业务组件之间的完全解耦从而降低app主体的代码改动风险。
5.本发明公开的一种基于contentprovider的app封装解耦方法,包括如下步骤:安装并配置预先构建的app主体、业务组件以及公共组件,所述公共组件包括分发事件的函数;加载app,使所述业务组件通过contentprovider添加标签到所述公共组件中;事件触发,所述app主体调用所述公共组件的函数,所述公共组件向所述业务组件分发事件,所述业务组件调用所述公共组件的函数。
6.进一步地,所述app主体调用所述公共组件的函数包括传入产品id以及根据产品id传递标签的步骤;所述公共组件向标签与所述产品id对应的所述业务组件分发事件。
7.进一步地,所述业务组件调用所述公共组件的函数包括所述业务组件重写所述公共组件的函数。
8.进一步地,所述业务组件重写所述公共组件的函数以处理所述业务组件的内部逻辑,包括直接实现公共组件的接口,以及通过覆盖函数重写逻辑。
9.进一步地,所述业务组件重写所述公共组件的函数以跳转页面。
10.本发明公开的一种基于contentprovider的app封装解耦系统,包括:app安装模块,用于安装并配置预先构建的app主体、业务组件以及具有分发事件函数的公共组件;app加载模块,用于将所述业务组件通过contentprovider添加标签到所述公共组件中;事件分发模块,用于在事件触发后,使所述app主体调用所述公共组件的函数、所述公共组件向所述业务组件分发事件、所述业务组件调用所述公共组件的函数。
11.进一步地,所述事件分发模块能够在事件触发后使所述app主体调用所述公共组件的函数传入产品id以及根据产品id传递标签、使所述公共组件向标签与所述产品id对应的所述业务组件分发事件、使所述业务组件重写所述公共组件的函数。
12.进一步地,所述事件分发模块能够使所述业务组件重写所述公共组件的函数以跳转页面。
13.本发明公开的一种计算机设备,包括:处理器;存储装置,用于存储程序;当所述程序被所述处理器执行,使得所述处理器实现上述的基于contentprovider的app封装解耦方法。
14.本发明公开的一种存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述的基于contentprovider的app封装解耦方法。
15.本技术的有益效果在于:
16.通过建立公共组件,使app主体和业务组件均调用公共组件的函数,app主体和业务组件之间实现完全独立,app主体不必直接调用业务组件,当业务组件发生改动或被删除时,无需再对app主体的代码做出修改,从而实现了app主体和业务组件之间的完全解耦,有利于提高软件开发的效率、增加代码稳定性、降低app主体的代码改动风险,进而有利于减少兼容性问题。
附图说明
17.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
18.图1为现有app中app主体与业务组件之间的关系图;
19.图2为实施例1中的app封装解耦方法的流程图;
20.图3为采用实施例1中封装解耦方法的app主体与业务组件之间的关系图;
21.图4为实施例2中的app封装解耦方法的流程图;
22.图5为实施例3中app封装解耦系统的结构示意图;
23.图6为实施例4中的计算机设备的结构示意图。
具体实施方式
24.以下将以图式揭露本发明的多个实施方式,为明确说明起见,许多实务上的细节将在以下叙述中一并说明。然而,应了解到,这些实务上的细节不应用以限制本发明。也就是说,在本发明的部分实施方式中,这些实务上的细节是非必要的。此外,为简化图式起见,一些习知惯用的结构与件在图式中将以简单的示意的方式绘示之。
25.需要说明,本发明实施例中所有方向性指示诸如上、下、左、右、前、后
……
仅用于解释在某一特定姿态如附图所示下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。
26.另外,在本发明中如涉及“第一”、“第二”等的描述仅用于描述目的,并非特别指称次序或顺位的意思,亦非用以限定本发明,其仅仅是为了区别以相同技术用语描述的件或操作而已,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各
个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
27.为能进一步了解本发明的发明内容、特点及功效,兹例举以下实施例,并配合附图详细说明如下:
28.实施例1
29.参照图2,为本实施例提供的一种基于contentprovider的app封装解耦方法,该方法包括如下步骤:
30.s11,安装并配置预先构建的app主体、业务组件以及公共组件,公共组件包括分发事件的函数;
31.s12,加载app,使业务组件通过contentprovider添加标签到公共组件中,此处的标签是用于区分不同业务组件的字符串;
32.其中,contentprovider即提供者,为安卓的四大组件之一,其具有封装数据、提供定义数据安全的机制的特性,业务组件通过contentprovider添加标签到公共组件的操作由初始化函数(oncreate)执行,app加载时,在初始化函数(oncreate)中初始化组件标签,由于初始化(oncreate)处于application生命周期方法attachbasecontext之后,加载时间靠前,能够保证用户在操作app时所有组件已经加载完成。
33.s13,事件触发,之后app主体调用公共组件的函数,公共组件向业务组件分发事件,业务组件调用公共组件的函数。
34.参照图3,通过建立公共组件,使app主体和业务组件均调用公共组件的函数,app主体和业务组件之间实现完全独立,app主体不必直接调用业务组件,当业务组件发生改动或被删除时,无需再对app主体的代码做出修改,从而实现了app主体和业务组件之间的完全解耦,有利于提高软件开发的效率、增加代码稳定性、降低app主体的代码改动风险,进而有利于减少兼容性问题。
35.实施例2
36.参照图4,在本实施例中,app主体包括设备的入口按钮,此处的设备包括但不限于扫地机;每一个设备均具有一个独特的产品id,同类型产品的id对应相同的标签。
37.本实施例提供的一种基于contentprovider的app封装解耦方法包括如下步骤:
38.s21,安装并配置预先构建的app主体、业务组件以及公共组件,公共组件包括分发事件的函数;
39.s22,加载app,使业务组件通过contentprovider添加标签到公共组件中,此处的标签是用于区分不同业务组件的字符串;
40.s23,事件触发,之后app主体直接调用公共组件的函数传递标签,即通过产品id与标签进行匹配,公共组件向标签与产品id对应的业务组件分发事件,业务组件重写公共组件的函数;
41.重写是组件通过覆盖函数(override)直接实现(implements)公共组件里面的接口,可以重新写逻辑,从而业务组件重写公共组件的函数能够处理自身内部逻辑,此处的逻辑包括但不限于跳转到对应的页面。
42.例如,进入扫地机控制面板的过程中,在app主体上点击扫地机的入口按钮后,会
调用公共组件的函数,传入扫地机设备的产品id,公共组件函数会根据传入的产品id去查询对应的业务组件,产品id与业务组件标签相同说明匹配成功,直接进入该业务组件,该业务组件重写公共组件的逻辑,实现页面的跳转,完成进入扫地机控制面板的操作。
43.因此,在本实施例中,无论是传递标签还是业务组件处理自身内部逻辑进行页面的跳转,app主体和业务组件均只需调用公共组件,两者直接与公共组件建立联系,从而解决了app主体直接引用业务组件的强关联问题,app主体和业务组件完全解耦,业务组件改动或删减对app主体没有影响,减少了兼容性问题。
44.实施例3
45.参照图5,本实施例提供一种基于contentprovider的app封装解耦系统,它包括app安装模块301、app加载模块302和事件分发模块303,其中,app安装模块301用于安装并配置预先构建的app主体、业务组件以及具有分发事件函数的公共组件;app加载模块302用于将业务组件通过contentprovider添加标签到公共组件中;事件分发模块303用于在事件触发后,使app主体调用公共组件的函数、公共组件向业务组件分发事件、业务组件调用公共组件的函数。
46.具体来说,在进入扫地机控制面板的过程中,在app主体上点击扫地机的入口按钮后,事件分发模块303能够使app主体调用公共组件的函数传入产品id以及根据产品id传递标签、使公共组件向标签与产品id对应的业务组件分发事件、使业务组件重写公共组件的函数;事件分发模块303能够使业务组件重写公共组件的函数以跳转页面到扫地机的控制面板。
47.实施例4
48.参照图6,本实施例提供一种计算机设备,包括处理器、用于存储程序的存储装置,当程序被处理器执行能够使得处理器实现实施例1或2所提供的封装解耦方法。
49.实施例5
50.本实施例提供一种存储介质,该存储介质存储有计算机程序,计算机程序被处理器执行时能够实现实施例1或实施例2的封装解耦方法。
51.本发明的实施原理和有益效果是:通过建立公共组件,使app主体和业务组件均调用公共组件的函数,app主体和业务组件之间实现完全独立,app主体不必直接调用业务组件,当业务组件发生改动或被删除时,无需再对app主体的代码做出修改,从而实现了app主体和业务组件之间的完全解耦,有利于提高软件开发的效率、增加代码稳定性、降低app主体的代码改动风险,进而有利于减少兼容性问题。
52.以上仅为本发明的实施方式而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理的内所作的任何修改、等同替换、改进等,均应包括在本发明的权利要求范围之内。
技术特征:
1.一种基于contentprovider的app封装解耦方法,其特征在于:安装并配置预先构建的app主体、业务组件以及公共组件,所述公共组件包括分发事件的函数;加载app,使所述业务组件通过contentprovider添加标签到所述公共组件中;事件触发,所述app主体调用所述公共组件的函数,所述公共组件向所述业务组件分发事件,所述业务组件调用所述公共组件的函数。2.根据权利要求1所述的基于contentprovider的app封装解耦方法,其特征在于:所述app主体调用所述公共组件的函数包括传入产品id以及根据产品id传递标签的步骤;所述公共组件向标签与所述产品id对应的所述业务组件分发事件。3.根据权利要求2所述的基于contentprovider的app封装解耦方法,其特征在于,所述业务组件调用所述公共组件的函数包括所述业务组件重写所述公共组件的函数。4.根据权利要求3所述的基于contentprovider的app封装解耦方法,其特征在于,所述业务组件重写所述公共组件的函数以处理所述业务组件的内部逻辑,包括直接实现公共组件的接口,以及通过覆盖函数重写逻辑。5.根据权利要求3或4所述的基于contentprovider的app封装解耦方法,其特征在于,所述业务组件重写所述公共组件的函数以跳转页面。6.一种基于contentprovider的app封装解耦系统,其特征在于,包括:app安装模块,用于安装并配置预先构建的app主体、业务组件以及具有分发事件函数的公共组件;app加载模块,用于将所述业务组件通过contentprovider添加标签到所述公共组件中;事件分发模块,用于在事件触发后,使所述app主体调用所述公共组件的函数、所述公共组件向所述业务组件分发事件、所述业务组件调用所述公共组件的函数。7.根据权利要求6所述的基于contentprovider的app封装解耦系统,其特征在于:所述事件分发模块能够在事件触发后使所述app主体调用所述公共组件的函数传入产品id以及根据产品id传递标签、使所述公共组件向标签与所述产品id对应的所述业务组件分发事件、使所述业务组件重写所述公共组件的函数。8.根据权利要求7所述的基于contentprovider的app封装解耦系统,其特征在于:所述事件分发模块能够使所述业务组件重写所述公共组件的函数以跳转页面。9.一种计算机设备,其特征在于,包括:处理器;存储装置,用于存储程序;当所述程序被所述处理器执行,使得所述处理器实现如权利要求1-5所提供的基于contentprovider的app封装解耦方法。10.一种存储介质,所述存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-5中任一所述的基于contentprovider的app封装解耦方法。
技术总结
本发明公开了一种基于ContentProvider的App封装解耦方法、系统、设备和存储介质,属于计算机软件开发应用的技术领域,主要技术方案是,安装并配置预先构建的App主体、业务组件以及公共组件,所述公共组件包括分发事件的函数;加载App,使所述业务组件通过ContentProvider添加标签到所述公共组件中;事件触发,所述App主体调用所述公共组件的函数,所述公共组件向所述业务组件分发事件,所述业务组件调用所述公共组件的函数;本发明实现了App主体和业务组件之间的完全解耦,有利于提高软件开发的效率、增加代码稳定性、降低App主体的代码改动风险,进而有利于减少兼容性问题。性问题。性问题。
技术研发人员:马超 王为举 赵传涛
受保护的技术使用者:深圳市普森斯科技有限公司
技术研发日:2023.07.26
技术公布日:2023/10/15
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
