app启动流程控制方法、计算机可读存储介质及终端
技术领域
1.本技术涉及移动互联网技术领域,尤其涉及一种app启动流程控制方法计算机可读存储介质及终端。
背景技术:2.移动互联网的时代app是大量场景的入口,当前业界对app的各种支持都停留在基于原生的标准模板app创建,这种方式仅能够为用户提供最为基础的指导,如果用户想要更深层次的了解app的整个生命周期,监控或者管理app启动流程,当前的支持是无法做到的。
3.另外,过多的关注app启动后的生命周期,对原生状态下的自然周期管理研究较浅,不能很好的控制,导致对app的优化只能停留在业务流程中。经测算,在app启动过程中的耗时也占据了很大的份额,存在巨大的优化空间,管理控制号app的启动流程,能够有效的提高资源利用率。本方案将会在app启动流程中进行较全面的分析和控制。
技术实现要素:4.有鉴于此,实有必要提供一种更加高效的app启动流程控制方法、计算机可读存储介质及终端。
5.第一方面,本技术实施例提供一种app启动流程控制方法,所述app启动流程控制方法包括下面步骤:客户端检测app的启动指令,所述app具有启动过程,所述启动过程被划分为多个启动阶段,每个启动阶段对应不同的阶段标识,所述app包括所述app启动过程中各阶段任务、以及配置了各阶段任务所对应的阶段标识的配置文件;若检测到app的启动指令,编译所述app,其中,当编译所述app时,所述各阶段任务的入口处被注入对应的阶段标识;获取预设的任务清单,所述预设的任务清单为在启动过程中各阶段任务清单;当所述app编译完成时,读取代码编译文件中具有阶段标识的任务得到编译任务清单,所述代码编译文件为所述app的代码被编译后形成;将所述编译任务清单中不在所述预设的任务清单中的任务进行剔除形成启动任务清单;以及执行所述启动任务清单,其中,所述启动任务清单中的任务依据所述各阶段标识的先后顺序执行。
6.第二方面,本技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质用于存储程序指令,所述程序指令可被处理器执行以实现如上所述的app启动流程控制方法。
7.第三方面,本技术实施例提供一种终端,其特征在于,所述终端设备包括:计算机可读存储介质,用于存储程序指令;处理器以及总线执行所述程序指令以实现上所述的app启动流程控制方法。
8.上述app启动流程控制方法、计算机可读存储介质及终端,通过使用内置任务清单和使用外置任务清单的方式,可以动态的实时调整启动流程中的启动任务。且内置任务清单与外置任务清单可以自定义,从而可以更加灵活的更改启动流程中的启动任务且使用外置任务清单不需更改代码就可以实现,从而减少了对业务代码的入侵,当需要修改可以直接在外置任务清单中进行修改,从而可以增加代码的扩展性。
附图说明
9.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
10.图1为本技术实施例提供的app启动流程控制方法的流程图。
11.图2为本技术实施例提供的app启动流程控制方法的第二实施例流程图。
12.图3为本技术实施例提供的app启动流程控制方法的第一子流程图。
13.图4为本技术实施例提供的生成编译文件的示意图。
14.图5为本技术实施例提供的app启动指令的示意图。
15.图6为本技术实施例提供的app的客户端访问服务器的示意图。
16.图7为本技术实施例提供的终端的内部结构示意图。
17.本技术目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
18.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本技术,并不用于限定本技术。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
19.本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的规划对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,换句话说,描述的实施例根据除了这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,还可以包含其他内容,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于只清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
20.需要说明的是,在本技术中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者多个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本技术要求的保护范围之内。
21.请结合参看图1、图2、图4、图5和图6,图1为本技术实施例提供的app启动流程控制
方法的流程图,图2为本技术实施例提供的app启动流程控制方法的流程图的第二实施例流程图,图4为本技术实施例提供的生成编译文件的示意图,图5为本技术实施例提供的app启动指令的示意图,图6为本技术实施例提供的app的客户端300访问服务器400的示意图。app启动流程控制方法具体包括步骤s102-s114。
22.步骤s102,客户端300检测app的启动指令。可以理解地,客户端300等待用户对app进行启动,并发出app的启动指令。
23.步骤s104,若检测到app的启动指令,编译app,其中,当编译app时,所述各阶段任务的入口处被注入对应的阶段标识。可以理解地,在开发阶段,开发人员对每个初始化启动任务中的初始化方法进行了单独封装成启动任务,当用户对该app进行启动时,客户端300检测到app的启动指令后,对app的的代码进行编译。其中,app启动过程被划分为多个启动阶段,每个阶段对应一个或多个启动任。为了不改变原来代码,当app的代码编译到对应阶段的启动任务时,对每个阶段的启动任务的入口函数处通过面向切面编程(aop)技术注入相对应的阶段标识。如图4所示,在启动任务编译时,对每个初始化启动任务的初始化方法的启动任务代码和采用面向切面编程(aop)技术注入的阶段标识,得到带有阶段标识的启动任务的目标代码,在对目标代码进行编译的过程中,可生成带有阶段标识的启动任务的编译文件。
24.举例来说,开发人员在开发阶段设置的启动阶段包括第一启动阶段、第二启动阶段和第三启动阶段。其中,第一启动阶段用pre作为阶段标识。第二启动阶段用load作为阶段标识。第三启动阶段用display作为标识。其中,第一启动阶段、第二启动阶段、第三启动阶段在时间上按照先后顺序排序。在本实施例中,开发人员在第一个启动阶段设置了监控软件开发工具包(监控sdk)中的监控初始化方法和环境软件开发工具包(环境sdk)中的环境初始化方法。其中,开发人员对监控软件开发工具包(监控sdk)中的监控初始化方法和环境软件开发工具包(环境sdk)中的环境初始化方法进行单独封装形成对应的监控启动任务封装包和环境启动任务封装包。开发人员在第二个启动阶段设置了监控软件开发工具包(监控sdk)中的监控初始化方法和网络软件开发工具包(网络sdk)中的网络初始化方法。其中,开发人员对监控软件开发工具包(监控sdk)中的监控初始化方法和网络软件开发工具包(网络sdk)中的网络初始化方法进行单独封装形成对应的监控启动任务封装包和网络启动任务封装包;开发人员在第三个启动阶段设置了定位软件开发工具包(定位sdk)中的定位初始化方法、摄像机软件开发工具包(摄像机sdk)中的摄像机初始化方法和图库软件开发工具包(图库sdk)中的图库初始化方法。其中,开发人员对定位软件开发工具包(定位sdk)中的定位初始化方法、摄像机软件开发工具包(摄像机sdk)中的摄像机初始化方法和图库软件开发工具包(图库sdk)中的图库初始化方法进行单独封装形成对应的定位启动任务封装包、摄像机启动任务封装包和图库启动任务封装包。
25.当app启动时,开始对app的代码进行编译,当对app的代码编译到启动阶段的第一阶段时,对该第一阶段的监控启动任务和环境启动任务开始编译,并在编译的过程中对该第一阶段的监控启动任务和环境启动任务的入口函数处分别采用面向切面编程(aop)技术注入第一阶段的标识pre;当app的代码编译到启动阶段的第二阶段时,对该第二阶段的监控启动任务和网络启动任务开始进行编译,并在编译的过程中对该第二阶段的监控启动任务和网络启动任务的入口函数处分别采用面向切面编程(aop)技术注入第二阶段的标识
load;当app的代码编译到启动阶段的第三阶段时,对该第三阶段的定位启动任务、摄像机启动任务和图库启动任务开始进行编译,并在编译的过程中对该第三阶段的定位启动任务、摄像机启动任务和图库启动任务的入口函数处分别采用面向切面编程(aop)技术注入第三阶段的标识display;当app的代码中的各个阶段的启动任务的阶段标识注入完成后,则该app的代码形成编译文件,且代码编译完成。
26.步骤s106,获取预设的任务清单,所述预设的任务清单为在启动过程中各阶段任务清单。在一些可行的实施例中,预设的任务清单包括预设的内置任务清单100和预设的外置任务清单200,所述预设的内置任务清单100和预设的外置任务清单200初始状态下是相同的。可以理解地,在一些可行的实施例中,预设的任务清单还可以是包括了预设的内置任务清单100和预设的外置任务清单200中的一者。具体地,在本实施例中,预设的内置清单是在开发阶段由开发人员设置在app中,在app发布后不可更改。外置任务清单200是存储于与客户端300通讯连接的服务器400。该外置任务清单200在app发布后,可以重新设置进行更新。下文将以预设的任务清单包括预设的内置任务清单100和预设的外置任务清单200为例,描述如何获取预设的任务清单。
27.步骤s108,当所述app编译完成时,读取代码编译文件中具有阶段标识的任务得到编译任务清单,所述代码编译文件为所述app的代码被编译后形成。可以理解地,当app的代码编译完成后,客户端300将对编译文件中已注入阶段标识的启动任务进行读取形成编译任务清单。
28.举例来说,若在app的代码编译期时,根据开发人员在app代码中设置的第一阶段的监控启动任务和环境启动任务;第二阶段的监控启动任务和网络启动任务;第三阶段的定位启动任务、摄像机启动任务和图库启动任务,并分别对每个启动任务注入相对应的阶段标识。当app代码编译完成后,客户端300根据编译好的app代码中将带有阶段标识的启动任务一起读取出来形成编译文件的任务清单,或客户端300根据阶段进行读取,具体地,先将app代码中带有第一阶段标识的启动任务读取出来,读取完毕后,再将带有第二阶段标识的启动任务读取出来,以此类推,直至将app代码中带有阶段标识的启动任务全部读取完毕。
29.步骤s110,将编译任务清单中不在预设的任务清单中的任务进行剔除形成启动任务清单。可以理解地,客户端300读取编译文件中的任务清单后,开始读取相应的预设的任务清单。将编译文件中的任务清单与相应的预设的任务清单中的各个阶段和各个阶段所对应的启动任务进行对比,若客户端300将编译文件的任务清单与内置任务清单100进行对比,客户端300将以内置任务清单100为准;当编译文件中的启动任务中的某个阶段中的启动任务,该内置任务清单100没有,则客户端300将编译文件中的该阶段的该启动任务进行剔除。若客户端300将编译文件的任务清单与外置任务清单200进行对比,客户端300将以外置任务清单200为准。当编译文件中的启动任务中的某个阶段中的启动任务,该外置任务清单200没有,则客户端300将编译文件中的该阶段的该启动任务进行剔除。
30.举例来说,若客户端300将编译文件的任务清单与内置任务清单100进行对比。具体地,若编译文件中的第一阶段包括:监控启动任务,环境启动任务;第二阶段包括:监控启动任务,网络启动任务;第三阶段包括:定位启动任务,摄像机启动任务,图库启动任务。客户端300读取内置任务清单100为第一阶段包括:监控启动任务,环境启动任务;第二阶段包
括:监控启动任务;第三阶段包括:定位启动任务,图库启动任务。客户端300将编译文件中的启动任务与内置任务清单100的启动任务进行对比后得出,编译文件的任务清单比内置任务清单100在第二阶段多出网络启动任务,在第三阶段多出摄像机启动任务。客户端300将编译文件中的第二阶段网络启动任务,在第三阶段摄像机启动任务在编译文件中进行剔除。得到最终的编译文件中的启动任务为第一阶段包括:监控启动任务,环境启动任务;第二阶段包括:监控启动任务;第三阶段包括:定位启动任务,图库启动任务。
31.举例来说,若客户端300将编译文件的任务清单与外置任务清单200进行对比。具体地,若编译文件中的第一阶段包括:监控启动任务,环境启动任务;第二阶段包括:监控启动任务,网络启动任务;第三阶段包括:定位启动任务,摄像机启动任务,图库启动任务。客户端300读取外置任务清单200为第一阶段包括:监控启动任务,环境启动任务;第二阶段包括:监控启动任务,网络启动任务;第三阶段包括:定位启动任务,摄像机启动任务和图库启动任务。客户端300将编译文件中的启动任务与外置任务清单200的启动任务进行对比后得出,编译文件的任务清单与外置任务清单200中的启动任务相同,则客户端300无需对编译文件中的启动任务进行剔除。若外置任务清单200与编译文件中的启动任务有差别则根据内置任务清单100的例子,对编译文件中的启动任务进行剔除。
32.步骤s112,执行启动任务清单,其中,启动任务清单中的任务依据所述各阶段标识的先后顺序执行。可以理解地,若该app的客户端300是将编译文件的任务清单与内置任务清单100进行对比的,则app将根据编译文件与内置任务清单100100对比后的编译文件中的任务清单,在对应阶段依次执行该对应阶段所对应的启动任务。若该app的客户端300是将编译文件的任务清单与内置任务清单100进行对比的。则app将根据编译文件与外置任务清单200对比后的编译文件中的任务清单,在对应阶段依次执行该对应阶段所对应的启动任务。
33.举例来说,若该app的客户端300是将编译文件的任务清单与内置任务清单100进行对比的,根据步骤s110中将编译文件任务清单与内置任务清单100对比后,得到编译文件任务清单与内置任务清单100一致的启动任务清单后,客户端300将根据阶段标识依序执行该编译文件中的启动任务,则该app的执行顺序为在app运行到第一阶段时,app将执行带有第一阶段标识的监控启动任务后,再执行带有第一阶段标识的环境启动任务;执行完毕后;在app运行到第二阶段时,app将开始执行带有第二阶段标识的监控启动任务;在app运行到第三阶段时,app将开始执行带有第三阶段标识的定位启动任务后,再执行带有第三阶段标识的图库启动任务。
34.举例来说,若该app的客户端300是将编译文件的任务清单与内置任务清单100进行对比的。根据步骤s110中将编译文件任务清单与外置任务清单200对比后,得到编译文件任务清单与内置任务清单100一致的启动任务清单后,客户端300将根据阶段标识依序执行该编译文件中的启动任务。则该app的执行顺序为在app运行到第一阶段时,app将执行带有第一阶段标识的监控启动任务后,再执行带有第一阶段标识的环境启动任务;执行完毕后;在app运行到第二阶段时,app将开始执行带有第二阶段标识的监控启动任务后,在执行带有第二阶段标识的网络启动任务;在app运行到第三阶段时,app将开始执行带有第三阶段标识的定位启动任务后,再执行带有第三阶段的摄像机启动任务后,在执行带有第三阶段标识的图库启动任务。
35.上述实施例中,通过设置使用内置任务清单100和/或使用外置任务清单200的方式,可以动态的实时调整启动流程中的启动任务。且内置任务清单100与外置任务清单200可以自定义,从而可以更加灵活的更改启动流程中的启动任务且使用外置任务清单200的方式不需更改代码就可以实现,从而减少了对业务代码的入侵,当需要修改可以直接在外置任务清单200中进行修改,从而可以增加代码的扩展性。
36.步骤s114,当app的启动指令为再次启动2指令时,读取所述更新外置任务清单200得到所述预设的任务清单。可以理解地,当监测到某一启动阶段启动任务出现启动故障,运维人员对其故障的启动任务进行变更等需要修改启动过程中编译文件中的启动任务的情况下,运维人员可以对存储外置任务清单200的配置文件中的启动任务进行更改,无需对服务器400进行重启就能更新存储外置任务清单200的配置文件中的启动任务。
37.举例来说,当外置任务清单200的配置文件中的第二阶段的启动任务包括:监控启动任务和网络启动任务时,在app启动过程中第二阶段网络任务出现故障,导致app启动失败,运维人员在外置任务清单200的配置文件中对网络启动任务进行删除,删除了外置任务清单200的配置文件中的网络启动任务后,无需对服务器400进行重新启动,且此时外置任务清单200的配置文件中的第二阶段的启动任务只有监控启动任务,当app重新启动访问服务器400中存储外置任务清单200的配置文件时,第二阶段的启动任务只有监控启动任务。
38.运维人员可以自定义对配置文件中的外置任务清单200的启动任务进行变更,且变更后不需重新启动外置任务清单200的服务器400,从而可以更加灵活高效的变更启动任务,实现了热更新启动任务。
39.可以理解地,步骤s114为app启动出现异常或运维人员需要对存储外置任务清单200的配置文件中的启动任务进行变更,且变更后不需重新服务器400,从而可以更加灵活高效的变更启动任务,实现了热更新启动任务,当省略掉步骤s114,也能够达到对app启动流程控制的效果。即,在一些可行的实施例中,步骤s114可以省略请结合参看图3,其为本技术实施例提供的app启动流程控制方法的第一子流程图,图5为本技术实施例提供的app启动指令的示意图。步骤s104具体包括步骤s302-s306。
40.步骤s302,判断所述检测所述指令为初次启动1指令还是再次启动2指令。可以理解地,app发布后,当用户对app进行启动时,app根据app运行日志记录来判断该次启动为初次启动1指令还是再次启动2指令。或开发人员在代码中写入判断是否为初次启动1的代码段来判断该次启动为初次启动1指令还是再次启动2指令。
41.举例来说,app发布后,当用户对app进行启动时,app开始对app的代码进行编译,对该app代码编译完成后,客户端300查看app的运行日志,若没有运行日志,则判断该app的启动指令为初次启动1指令;若有运行日志,则判断该app的启动指令为再次启动2指令。
42.举例来说,app发布后,当用户对app进行启动时,app开始对app的代码进行编译,对该app代码编译完成后。app开始根据开发人员在app代码中写入的判断启动指令,判断该次启动是否为初次启动指令1。
43.步骤s304,当所述app的启动指令为初次启动1指令时,读取所述内置任务清单100得到所述预设的任务清单。可以理解地,在本实施例中,开发人员利用配置文件设置了内置任务清单100,用于对发布后的执行初次启动1指令时,可以对app的启动流程进行控制,且该预设的内置任务清单100与编译文件不同,在一些可行的实施例中,也可以将编译文件中
的启动任务设置成与内置的启动任务相同当客户端300判断该app为初次启动1时,在编译完app的代码后,开始读取开发人员设置的内置任务清单100,并对开发人员设置的内置任务清单100进行读取得到该app执行初次启动1指令时,应在各个阶段执行哪些启动任务的任务清单。
44.举例来说,开发人员在发布前在内置的配置文件中写入启动的任务清单为,第一阶段:监控启动任务,环境启动任务;第二阶段:监控启动任务;第三阶段:定位启动任务,图库启动任务。当客户端300通过运行日志得知该app执行的启动指令为初次启动1指令时,在编译完app的代码后,开始读取开发人员设置的内置任务清单100。最终得到内置任务清单100为第一阶段:监控启动任务,环境启动任务;第二阶段:监控启动任务;第三阶段:定位启动任务,图库启动任务。
45.步骤s306,当所述app的启动指令为再次启动2指令时,读取所述外置任务清单200得到所述预设的任务清单。可以理解地,在本实施例中,运维人员利用配置文件设置了外置任务清单200,用于在app执行再次启动2指令时,可以对app的启动流程进行控制,且该预设的外置任务清单200与编译文件的启动任务不同,也与内置启动任务不同,在一些实施例中,预设的外置任务清单200可以与编译文件和内置任务清单100中的启动任务都相同或二者中的一个相同。当客户端300判断该app为再次启动2时,在编译完app的代码后,开始读取运维人员设置的外置任务清单200,并对运维人员设置的外置任务清单200进行读取得到该app执行再次启动2指令时,应在各个阶段执行哪些启动任务的任务清单。
46.举例来说,运维人员在外置任务清单200中写入启动任务清单为第一阶段包括:监控启动任务,环境启动任务;第二阶段包括:监控启动任务;第三阶段包括:定位启动任务,摄像机启动任务和图库启动任务。当客户端300通过运行日志得知该app执行的启动指令不是初次启动1指令时,在编译完app的代码后,开始读取运维人员设置的外置任务清单200。最终得到外置任务清单200为第一阶段:监控启动任务,环境启动任务;第二阶段:监控启动任务;第三阶段:定位启动任务,摄像机启动任务和图库启动任务。
47.上述实施例中,通过判断app执行的启动指令是否为初次启动1指令,进而可以根据不同的情况调用不同的任务清单,从而可以更加灵活的对启动流程设置每个阶段的启动任务且减少了对业务代码的入侵。
48.本技术实施例提供一种计算机可读存储介质,该计算机可读存储介质用于存储计算机程序,上述计算机程序被处理器执行,以实现如上述实施例中记载的任一方法的部分或全部步骤。
49.请结合参看图7,其为本技术实施例提供的终端的内部结构示意图。终端10包括计算机可读存储介质11、处理器12以及总线13。其中,计算机可读存储介质11至少包括一种类型的可读存储介质,该可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、磁性存储器、磁盘、光盘等。计算机可读存储介质11在一些实施例中可以是终端10的内部存储单元,例如终端10的硬盘。计算机可读存储介质11在另一些实施例中也可以是的外部终端10存储设备,例如终端10上配备的插接式硬盘、智能存储卡(smart media card, smc)、安全数字(secure digital, sd)卡、闪存卡(flash card)等。进一步地,计算机可读存储介质11还可以既包括终端10的内部存储单元也包括外部存储设备。计算机可读存储介质11不仅可以用于存储安装于终端10的应用软件及各类数据,还可以用于暂时地存
储已经输出或者将要输出的数据。
50.总线13可以是外设部件互连标准(peripheral component interconnect,pci)总线或扩展工业标准结构(extended industry standard architecture,eisa)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
51.进一步地,终端10还可以包括显示组件14。显示组件14可以是发光二极管(light emitting diode,led)显示器、液晶显示器、触控式液晶显示器以及有机发光二极管(organic light-emitting diode,oled)触摸器等。其中,显示组件14也可以适当的称为显示装置或显示单元,用于显示在终端10中处理的信息以及用于显示可视化的用户界面。
52.进一步地,终端10还可以包括通信组件15。通信组件15可选地可以包括有线通信组件和/或无线通信组件,如wi-fi通信组件、蓝牙通信组件等,通常用于在终端10与其他智能控制设备之间建立通信连接。
53.处理器12在一些实施例中可以是一中央处理器(central processing unit, cpu)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行计算机可读存储介质11中存储的程序代码或处理数据。具体地,处理器12执行程序以控制终端10app启动流程控制方法。
54.可以理解地,图7仅示出了具有组件11-15以及实现app启动流程控制方法的终端10,本领域技术人员可以理解的是,图7示出的结构并不构成对终端10的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
55.显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘且本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
56.以上所列举的仅为本技术较佳实施例而已,当然不能以此来限定本技术之权利范围,因此依本技术权利要求所作的等同变化,仍属于本技术所涵盖的范围。