一种应用启动的方法及系统与流程

文档序号:20916938发布日期:2020-05-29 13:39阅读:138来源:国知局
一种应用启动的方法及系统与流程

本发明涉及计算机技术领域,特别涉及一种应用启动的方法及系统。



背景技术:

随着计算机技术及移动通信技术的发展,可实现多种功能的不同应用被开发出来,这些应用基于安卓操作系统或者视窗操作系统等,安装后启动实现对应的功能。随着不同应用的增多,在同一终端设备中常常会具有数量众多的不同应用这些应用的逻辑越来越复杂,应用实现的计算机代码也逐渐增多,应用的初始化流程也会越来越复杂,应用的计算机代码间会产生较多依赖关系,且耦合严重,严重影响了应用的启动及后续运行。为了使得同一终端设备中的应用能够正常启动,需要人为的对各个应用的启动流程逻辑进行梳理,进行应用中的功能解耦,使得各个应用的初始化流程重新简化且清晰。

但是,采用这种人工方式对同一终端设备的应用中的功能逻辑进行梳理,有以下缺点:第一,需要人工参与,对人员的计算机能力要求比较高,且费工费时;第二,这种应用的人工功能解方式对应用处理后,只能维持一段时间,随着应用的增加及由于应用更新而导致的应用的计算机代码持续增多,甚至应用的初始化包括一些异步启动,或原本没有依赖关系的功能随着迭代逐步产生依赖关系,则需要重新进行应用的人工功能解耦,比较复杂。



技术实现要素:

有鉴于此,本发明实施例提供一种应用启动的方法,该方法能够在应用初始化配置时确定应用间的逻辑关系,在应用初始化执行时调用初始化配置实现应用的正常启动。

本发明实施例提供一种应用启动的系统,该方法能够在应用初始化配置时确定应用间的逻辑关系,在应用初始化执行时调用初始化配置实现应用的正常启动。

本发明实施例是这样实现的:

一种应用启动的方法,该方法包括:

针对每个应用,将不同功能设置为不同功能模块;

根据功能模块间的依赖关系及先后顺序,生成有向图数据结构并保存,所述有向图的顶点为不同功能模块,所述顶点之间的向边及箭头方向分别表示功能模块之间的依赖关系及执行先后顺序;

在启动应用时,调用所存储的有向图数据结构,根据所确定应用的各个功能模块之间的依赖关系及执行先后顺序,进行启动。

一种应用启动的系统,包括:功能模块设置单元、应用初始化设置单元及应用初始化执行单元,其中,

功能模块设置单元,用于针对每个应用,将不同功能设置为不同功能模块;

应用初始化设置单元,用于根据功能模块间的依赖关系及先后顺序,生成有向图数据结构并保存,所述有向图的顶点为不同功能模块,所述顶点之间的向边及箭头方向分别表示功能模块之间的依赖关系及执行先后顺序;

应用初始化执行单元,用于调用所存储的有向图数据结构,根据所确定应用的各个功能模块之间的依赖关系及执行先后顺序,启动应用。

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

附图说明

图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()的设计执行初始化逻辑,将功能模块间的依赖关系按照有向图的数据结构处理,可以规范应用初始化的启动顺序,解决依赖解耦合问题,优化启动流程。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1