CN111209052A - 一种应用启动的方法及系统 - Google Patents

一种应用启动的方法及系统 Download PDF

Info

Publication number
CN111209052A
CN111209052A CN201811382621.5A CN201811382621A CN111209052A CN 111209052 A CN111209052 A CN 111209052A CN 201811382621 A CN201811382621 A CN 201811382621A CN 111209052 A CN111209052 A CN 111209052A
Authority
CN
China
Prior art keywords
application
directed graph
dependency relationship
data structure
functional modules
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201811382621.5A
Other languages
English (en)
Inventor
陈泓屹
朱立军
张志强
赵慧艳
黄鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201811382621.5A priority Critical patent/CN111209052A/zh
Publication of CN111209052A publication Critical patent/CN111209052A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files

Abstract

本发明公开了一种应用启动的方法及系统,为每个应用的不同功能设置不同的功能模块,在应用的初始化配置过程中将各个功能模块的依赖关系及执行先后顺序以有向图数据结构存储,在应用初始化执行时调取存储的有向图数据结构,获取应用的各个功能模块的依赖关系及执行先后顺序,实现应用的正常启动。这样,应用的不同功能之间的依赖关系及执行先后顺序就可以通过有向图数据结构标识,并通过对有向图数据结构的调用实现应用的正常启动。

Description

一种应用启动的方法及系统
技术领域
本发明涉及计算机技术领域,特别涉及一种应用启动的方法及系统。
背景技术
随着计算机技术及移动通信技术的发展,可实现多种功能的不同应用被开发出来,这些应用基于安卓操作系统或者视窗操作系统等,安装后启动实现对应的功能。随着不同应用的增多,在同一终端设备中常常会具有数量众多的不同应用这些应用的逻辑越来越复杂,应用实现的计算机代码也逐渐增多,应用的初始化流程也会越来越复杂,应用的计算机代码间会产生较多依赖关系,且耦合严重,严重影响了应用的启动及后续运行。为了使得同一终端设备中的应用能够正常启动,需要人为的对各个应用的启动流程逻辑进行梳理,进行应用中的功能解耦,使得各个应用的初始化流程重新简化且清晰。
但是,采用这种人工方式对同一终端设备的应用中的功能逻辑进行梳理,有以下缺点:第一,需要人工参与,对人员的计算机能力要求比较高,且费工费时;第二,这种应用的人工功能解方式对应用处理后,只能维持一段时间,随着应用的增加及由于应用更新而导致的应用的计算机代码持续增多,甚至应用的初始化包括一些异步启动,或原本没有依赖关系的功能随着迭代逐步产生依赖关系,则需要重新进行应用的人工功能解耦,比较复杂。
发明内容
有鉴于此,本发明实施例提供一种应用启动的方法,该方法能够在应用初始化配置时确定应用间的逻辑关系,在应用初始化执行时调用初始化配置实现应用的正常启动。
本发明实施例提供一种应用启动的系统,该方法能够在应用初始化配置时确定应用间的逻辑关系,在应用初始化执行时调用初始化配置实现应用的正常启动。
本发明实施例是这样实现的:
一种应用启动的方法,该方法包括:
针对每个应用,将不同功能设置为不同功能模块;
根据功能模块间的依赖关系及先后顺序,生成有向图数据结构并保存,所述有向图的顶点为不同功能模块,所述顶点之间的向边及箭头方向分别表示功能模块之间的依赖关系及执行先后顺序;
在启动应用时,调用所存储的有向图数据结构,根据所确定应用的各个功能模块之间的依赖关系及执行先后顺序,进行启动。
一种应用启动的系统,包括:功能模块设置单元、应用初始化设置单元及应用初始化执行单元,其中,
功能模块设置单元,用于针对每个应用,将不同功能设置为不同功能模块;
应用初始化设置单元,用于根据功能模块间的依赖关系及先后顺序,生成有向图数据结构并保存,所述有向图的顶点为不同功能模块,所述顶点之间的向边及箭头方向分别表示功能模块之间的依赖关系及执行先后顺序;
应用初始化执行单元,用于调用所存储的有向图数据结构,根据所确定应用的各个功能模块之间的依赖关系及执行先后顺序,启动应用。
如上可见,本发明实施例为每个应用的不同功能设置不同的功能模块,在应用的初始化配置过程中将各个功能模块的依赖关系及执行先后顺序以有向图数据结构存储,在应用初始化执行时调取存储的有向图数据结构,获取应用的各个功能模块的依赖关系及执行先后顺序,实现应用的正常启动。这样,应用的不同功能之间的依赖关系及执行先后顺序就可以通过有向图数据结构标识,并通过对有向图数据结构的调用实现应用的正常启动。
附图说明
图1为本发明实施例提供的应用启动方法流程图;
图2为本发明实施例提供的一个应用由多个功能模块组成的结构示意图;
图3为本发明实施例提供的对功能模块进行处理的流程图;
图4为本发明实施例提供的功能模块之间依赖关系及执行先后顺序的结构示意图;
图5为本发明实施例提供的调用有向图数据结构实现初始化配置的方法流程图;
图6为本发明实施例提供的插入与功能模块有依赖关系的额外任务的过程示意图;
图7为本发明实施例提供的应用启动系统流程图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
为了解决背景技术中的应用在启动过程中由于功能之间的依赖关系而造成的无法正常启动,本发明实施例在应用初始化设置阶段对应用的功能之间的依赖关系及执行先后顺序进行梳理并将梳理结果保存,以便在应用进行初始化执行时直接调用即可完成应用的启动。具体地,本发明实施例为每个应用的不同功能设置不同的功能模块,在应用的初始化配置过程中将各个功能模块的依赖关系及执行先后顺序以有向图数据结构存储,在应用初始化执行时调取存储的有向图数据结构,获取应用的各个功能模块的依赖关系及执行先后顺序,实现应用的正常启动。这样,应用的不同功能之间的依赖关系及执行先后顺序就可以通过有向图数据结构标识,并通过对有向图数据结构的调用实现应用的正常启动。
有向图指的是一个有序三元组(V(D),A(D),ψD),其中ψD为关联函数,它使A(D)中的每一个元素,称为有向边或弧,对应于V(D)中的一个有序元素对,称为顶点或点对。在本发明实施例中,有向图中的顶点设置为应用的功能,有向图中的向边或弧表示功能模块之间的依赖关系,有向图中的向边或弧的箭头方向表示执行先后顺序,顶点的出边条数称为该顶点的出度,顶点的入边条数称为该项点的的入度,顶点的入度数表示该顶点所依赖的顶点个数,也就是顶点所表示的功能模块依赖的其他功能模块的个数。
图1为本发明实施例提供的应用启动方法流程图,其具体步骤为:
步骤101、针对每个应用,将不同功能设置为不同功能模块;
在该步骤中,将每个应用按照功能解耦,设置为不同功能模块,一个应用由多个功能模块组成;
步骤102、在应用的初始化配置阶段,根据功能模块间的依赖关系及先后顺序,生成有向图数据结构并保存,所述有向图的顶点为不同功能模块,所述顶点之间的向边及箭头方向分别表示功能模块之间的依赖关系及执行先后顺序;
在该步骤中,所述功能模块之间的依赖关系及执行先后顺序是在功能模块所属的应用运行时获取的;
步骤103、在应用的初始化执行阶段,调用所存储的有向图数据结构,根据所确定应用的各个功能模块之间的依赖关系及执行先后顺序,启动应用。
在该方法中,在应用的初始化执行阶段之前,该方法还包括:
为功能模块设置执行任务,根据所述功能模块下的执行任务与所述功能模块的依赖关系及执行先后顺序,对所存储的有向图数据结构进行更新,其中的顶点表示所述任务,所述顶点之间的向边及箭头方向分别表示所述任务与所述功能模块之间的依赖关系及执行先后顺序。
可以看出,本发明实施例以模块化架构的方式,通过设计生命周期及制定依赖规则,规范应用的初始化启动流程。
以下对本发明实施例进行详细说明。
首先,将应用按照功能解耦,为应用的每个功能设置功能模块,如图2所示,图2为本发明实施例提供的一个应用由多个功能模块组成的结构示意图,如图所示,该应用中包括四个功能模块,分别为功能模块A、功能模块B、功能模块C及功能模块D。
然后,为每个功能模块设置一个插件类,即plugin类,作为该功能模块的执行描述,该功能模块的执行在plugin类下就可以分为以下几个阶段:属性类设置阶段(dependency())、配置阶段(configure())及执行阶段(execute()),其中,dependency()为初始化配置阶段,configure()及execute()为初始化执行阶段。如图3所示,图3为本发明实施例提供的对功能模块进行处理的流程图。
其中,dependency(),用于设置功能模块间的依赖关系,即在应用的运行时期获取应用的功能模块间的、及与其他应用的功能模块间的依赖关系及执行先后顺序,生成有向图数据结构,保存。举一个例子说明,图4为本发明实施例提供的功能模块之间依赖关系及执行先后顺序的结构示意图,如图所示,功能模块D依赖于功能模块C执行,而功能模块C依赖于功能模块A和功能模块B执行,将功能模块之间的依赖关系及执行的先后顺序映射到有向图中,其中,有向图的顶点为功能模块标识,顶点之间的向边为功能模块之间的依赖关系,向边的箭头为功能模块的执行先后顺序。
configure()是对功能模块的初始化参数配置阶段,配置的初始化参数包括数据配置参数、注册回调参数及注册服务参数等,在配置时,调用存储的有向图数据结构来配置依赖关系及先后执行顺序。
图5为本发明实施例提供的调用有向图数据结构实现初始化配置的方法流程图,其具体步骤为:
步骤501、根据调用的有向图数据结构中所有的顶点,遍历出入度为0的顶点,保存;
步骤502、将与所保存的顶点的相邻顶点的入度减一之后,判断所述相邻顶点的入度为0时,执行步骤503;
步骤503、将入度为0的顶点保存,转入步骤502,继续执行;
步骤504、确定所有顶点是否被遍历完成,如果是,则完成本流程;如果否,则说明功能模块之间的依赖关系中有循环依赖,形成环,则输出异常结果。
在本发明实施例中,将从有向图数据结构中的顶点依次保存在终端设备的内存中,从而在内存的存储结果就可以确定应用的各个功能模块的依赖关系及执行先后顺序。
在configure()过程中,就是采用图5的方式得到各个功能模块之间的依赖关系及执行先后顺序,按照这个结果进行应用的初始化执行过程。
在本发明实施例中,在configure()过程中,还包括:为其中的功能模块插入所设置的额外任务(BootTask),以便功能模块可以执行一些提前初始化预加载逻辑。所插入的BootTask也作为顶点插入到有向图数据结构中。
举一个例子说明,如图6所示,图6为本发明实施例提供的插入与功能模块有依赖关系的额外任务的过程示意图:功能模块A和功能模块B分别有一个BootTask,作为了有向图数据结构中的一个顶点。在图中,也可以将为每个功能模块设置一个插件类(plugin)作为任务,设置在有向图数据结构中的一个顶点。
在execute()过程中,由于有向图数据结构中加入了BootTask作为顶点,所以有向图数据结构已经修改,需要重新按照图5的方法调取修改后的有向图数据结构,得到应用初始化时各个功能模块的执行顺序及依赖关系,及各个功能模块下的任务执行顺序及依赖关系后,对应用进行启动。
本发明实施例中,应用基于的操作系统可以为安卓系统。
图7为本发明实施例提供的应用启动系统流程图,该系统包括:功能模块设置单元、应用初始化设置单元及应用初始化执行单元,其中,
功能模块设置单元,用于针对每个应用,将不同功能设置为不同功能模块;
应用初始化设置单元,用于根据功能模块间的依赖关系及先后顺序,生成有向图数据结构并保存,所述有向图的顶点为不同功能模块,所述顶点之间的向边及箭头方向分别表示功能模块之间的依赖关系及执行先后顺序;
应用初始化执行单元,用于调用所存储的有向图数据结构,根据所确定应用的各个功能模块之间的依赖关系及执行先后顺序,启动应用。
在该系统中,所述应用初始化设置单元,还用于所述功能模块之间的依赖关系及执行先后顺序是在功能模块所属的应用运行时获取的。
在该系统中,所述应用初始化设置单元,还用于为功能模块设置执行任务,根据所述功能模块下的执行任务与所述功能模块的依赖关系及执行先后顺序,对所存储的有向图数据结构进行更新,其中的顶点表示所述任务,所述顶点之间的向边及箭头方向分别表示所述任务与所述功能模块之间的依赖关系及执行先后顺序。
可以看出,本发明实施例通过功能模块化方案对应用进行改造,在三个阶段dependency()、configure()及execute()的设计执行初始化逻辑,将功能模块间的依赖关系按照有向图的数据结构处理,可以规范应用初始化的启动顺序,解决依赖解耦合问题,优化启动流程。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

Claims (10)

1.一种应用启动的方法,其特征在于,该方法包括:
针对每个应用,将不同功能设置为不同功能模块;
根据功能模块间的依赖关系及先后顺序,生成有向图数据结构并保存,所述有向图的顶点为不同功能模块,所述顶点之间的向边及箭头方向分别表示功能模块之间的依赖关系及执行先后顺序;
在启动应用时,调用所存储的有向图数据结构,根据所确定应用的各个功能模块之间的依赖关系及执行先后顺序,进行启动。
2.如权利要求1所述的方法,其特征在于,所述将不同功能设置为不同功能模块为:
将每个应用按照功能解耦,设置为不同功能模块,一个应用由多个功能模块组成。
3.如权利要求1所述的方法,其特征在于,所述功能模块之间的依赖关系及执行先后顺序是在功能模块所属的应用运行时获取的。
4.如权利要求1所述的方法,其特征在于,所述生成有向图数据结构并保存在应用的初始化配置阶段完成;
所述启动应用在应用的初始化执行阶段完成。
5.如权利要求1所述的方法,其特征在于,在应用启动之前,该方法还包括:
为功能模块设置执行任务,根据所述功能模块下的执行任务与所述功能模块的依赖关系及执行先后顺序,对所存储的有向图数据结构进行更新,其中的顶点表示所述任务,所述顶点之间的向边及箭头方向分别表示所述任务与所述功能模块之间的依赖关系及执行先后顺序。
6.如权利要求1所述的方法,其特征在于,所述调用所存储的有向图数据结构过程为:
a、根据调用的有向图数据结构中所有的顶点,遍历出入度为0的顶点,保存;
b、将与所保存的顶点的相邻顶点的入度减一之后,判断所述相邻顶点的入度为0时,执行步骤c;
c、将入度为0的顶点保存,转入步骤b,继续执行;
d、确定所有顶点是否被遍历完成,如果是,则完成本流程;如果否,则说明功能模块之间的依赖关系中有循环依赖,形成环,则输出异常结果。
7.一种应用启动的系统,其特征在于,包括:功能模块设置单元、应用初始化设置单元及应用初始化执行单元,其中,
功能模块设置单元,用于针对每个应用,将不同功能设置为不同功能模块;
应用初始化设置单元,用于根据功能模块间的依赖关系及先后顺序,生成有向图数据结构并保存,所述有向图的顶点为不同功能模块,所述顶点之间的向边及箭头方向分别表示功能模块之间的依赖关系及执行先后顺序;
应用初始化执行单元,用于调用所存储的有向图数据结构,根据所确定应用的各个功能模块之间的依赖关系及执行先后顺序,启动应用。
8.如权利要求7所述的系统,其特征在于,所述应用初始化设置单元,还用于所述功能模块之间的依赖关系及执行先后顺序是在功能模块所属的应用运行时获取的;
所述应用初始化设置单元,还用于为功能模块设置执行任务,根据所述功能模块下的执行任务与所述功能模块的依赖关系及执行先后顺序,对所存储的有向图数据结构进行更新,其中的顶点表示所述任务,所述顶点之间的向边及箭头方向分别表示所述任务与所述功能模块之间的依赖关系及执行先后顺序。
9.一种应用启动的装置,其特征在于,包括:
存储器;以及
耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如权利要求1-6中任一项所述的应用启动的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-6中任一项所述的应用启动的方法。
CN201811382621.5A 2018-11-20 2018-11-20 一种应用启动的方法及系统 Pending CN111209052A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811382621.5A CN111209052A (zh) 2018-11-20 2018-11-20 一种应用启动的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811382621.5A CN111209052A (zh) 2018-11-20 2018-11-20 一种应用启动的方法及系统

Publications (1)

Publication Number Publication Date
CN111209052A true CN111209052A (zh) 2020-05-29

Family

ID=70789180

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811382621.5A Pending CN111209052A (zh) 2018-11-20 2018-11-20 一种应用启动的方法及系统

Country Status (1)

Country Link
CN (1) CN111209052A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111752568A (zh) * 2020-06-23 2020-10-09 厦门美柚股份有限公司 应用程序的编译处理方法、装置、终端及介质
CN112199125A (zh) * 2020-09-18 2021-01-08 上海硬通网络科技有限公司 应用的启动方法、装置及电子设备
CN112783568A (zh) * 2021-01-12 2021-05-11 网易(杭州)网络有限公司 应用程序的初始化方法、装置、设备和存储介质
CN114564254A (zh) * 2022-04-26 2022-05-31 广州世炬网络科技有限公司 模块初始化顺序生成方法、装置、设备及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102486732A (zh) * 2010-12-02 2012-06-06 上海可鲁系统软件有限公司 一种分布式平台及平台中功能模块启动优先级控制方法
CN104765620A (zh) * 2014-01-02 2015-07-08 国际商业机器公司 一种程序模块部署的方法和系统
CN104965760A (zh) * 2015-06-29 2015-10-07 广州酷狗计算机科技有限公司 一种管理软件功能模块生命周期的方法和装置
CN105528225A (zh) * 2015-11-30 2016-04-27 用友优普信息技术有限公司 应用程序的加载方法及加载装置
CN106874031A (zh) * 2017-01-03 2017-06-20 青岛海信电器股份有限公司 一种终端设备系统程序的启动方法及装置
CN107015820A (zh) * 2016-01-27 2017-08-04 阿里巴巴集团控股有限公司 应用启动方法、装置及服务器
CN107766060A (zh) * 2017-10-31 2018-03-06 新华三云计算技术有限公司 应用配置部署方法及装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102486732A (zh) * 2010-12-02 2012-06-06 上海可鲁系统软件有限公司 一种分布式平台及平台中功能模块启动优先级控制方法
CN104765620A (zh) * 2014-01-02 2015-07-08 国际商业机器公司 一种程序模块部署的方法和系统
CN104965760A (zh) * 2015-06-29 2015-10-07 广州酷狗计算机科技有限公司 一种管理软件功能模块生命周期的方法和装置
CN105528225A (zh) * 2015-11-30 2016-04-27 用友优普信息技术有限公司 应用程序的加载方法及加载装置
CN107015820A (zh) * 2016-01-27 2017-08-04 阿里巴巴集团控股有限公司 应用启动方法、装置及服务器
CN106874031A (zh) * 2017-01-03 2017-06-20 青岛海信电器股份有限公司 一种终端设备系统程序的启动方法及装置
CN107766060A (zh) * 2017-10-31 2018-03-06 新华三云计算技术有限公司 应用配置部署方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
微信客户端技术团队: "微信Android模块化架构重构实践", 《HTTPS://MP.WEIXIN.QQ.COM/S/6Q818XA5FAHD7JJMFBG60W》, pages 1 - 31 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111752568A (zh) * 2020-06-23 2020-10-09 厦门美柚股份有限公司 应用程序的编译处理方法、装置、终端及介质
CN112199125A (zh) * 2020-09-18 2021-01-08 上海硬通网络科技有限公司 应用的启动方法、装置及电子设备
CN112783568A (zh) * 2021-01-12 2021-05-11 网易(杭州)网络有限公司 应用程序的初始化方法、装置、设备和存储介质
CN114564254A (zh) * 2022-04-26 2022-05-31 广州世炬网络科技有限公司 模块初始化顺序生成方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
CN111209052A (zh) 一种应用启动的方法及系统
Kuhn Weak graph colorings: distributed algorithms and applications
CN112272218B (zh) 云平台实例资源操作方法、装置、计算机设备及存储介质
CN112434061B (zh) 支持循环依赖的任务调度方法和系统
EP3912074B1 (en) Generating a synchronous digital circuit from a source code construct defining a function call
CN108762905B (zh) 一种多任务事件的处理方法和装置
CN110162344B (zh) 一种隔离限流的方法、装置、计算机设备及可读存储介质
CN108809683A (zh) 部署云应用系统的方法及装置
CN116737130B (zh) 面向模态中间表示的编译方法、系统、设备和存储介质
CN109067562A (zh) 基于智能指针的动态配置更新方法及系统、服务器及介质
CN108536541B (zh) 流程引擎对象处理方法及装置
CN112470119B (zh) 一种分布式系统中的业务升级方法、装置及分布式系统
CN112379906A (zh) 服务的更新方法、装置、存储介质以及电子装置
CN114327673B (zh) 一种任务启动方法、装置、电子设备及存储介质
CN106599156B (zh) 一种基于struts2拦截器的动态拦截器管理方法
Manne et al. A new self-stabilizing maximal matching algorithm
WO2017128589A1 (zh) 可运行文件生成方法、art虚拟机运行方法和装置
CN114546502B (zh) 一种基于白名单创建启动项的方法、装置及可读存储介质
CN110968327A (zh) 服务系统及其部署方法
CN114726911B (zh) 分布式工业机器人在线服务编排的路由参数传递方法
CN113839820B (zh) 一种更新服务时寻找最优网络更新节点的方法及其系统
CN110597607B (zh) 异步应用程序的执行方法、装置、存储介质及电子设备
CN115794260B (zh) 一种简单的dsp软件库动态加载方法
CN116627523A (zh) 程序启动的加速方法、装置、移动终端及存储介质
CN117667463A (zh) 一种Node与Python的交互方法、装置、设备及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination