一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

程序启动的加速方法、装置、移动终端及存储介质与流程

2023-08-25 18:12:41 来源:中国专利 TAG:


1.本发明涉及数据处理领域,尤其涉及一种程序启动的加速方法、装置、移动终端及存储介质。


背景技术:

2.随着设备的应用功能增多,应用启动时,需要完成的初始化任务也越来越多。目前常用的程序启动的加速方案就是直接for循环或者采用google提供的startup库,该方式是直接在主线程一个个执行,影响启动速度,程序启动的加速效果差。


技术实现要素:

3.本发明的主要目的在于解决程序启动的加速效果差的技术问题。
4.本发明第一方面提供了一种程序启动的加速方法,所述程序启动的加速方法包括:
5.在任务队列获取入度为0的待执行任务;
6.根据所述待执行任务的任务类型执行所述待执行任务并确定所述任务队列是否存在所述未执行任务;
7.若存在所述未执行任务,筛选出依赖已执行任务的未执行任务,并将依赖所述已执行任务的未执行任务入度数减1,返回执行所述在任务队列获取入度为0的待执行任务的步骤,所述已执行任务为执行完毕的所述待执行任务;
8.若不存在所述未执行任务,输出加速成功的提示信息。
9.可选的,在本发明第一方面的第一种实现方式中,所述在任务队列获取入度为0的待执行任务的步骤之前,所述方法还包括:
10.将入度为0的待放置任务放置到任务队列并确定是否存在未放置任务;
11.若存在所述未放置任务,筛选出依赖已放置任务的未放置任务,并将依赖所述已放置任务的未放置任务的入度数减1,返回执行所述将入度为0的待放置任务放置到任务队列并确定是否存在未放置任务的步骤,所述已放置任务为放置完毕的所述待放置任务;
12.若不存在所述未放置任务,将所述任务队列中已放置任务的入度数还原为放置前的数值,得到所述待执行任务,执行所述在任务队列获取入度为0的待执行任务的步骤。
13.可选的,在本发明第一方面的第二种实现方式中,所述将入度为0的待放置任务放置到任务队列并确定是否存在未放置任务的步骤之前,所述方法还包括:
14.确定是否存在入度为0的待放置任务;
15.若不存在所述待放置任务,输出配置异常的提示信息;
16.若存在所述待放置任务,执行所述将入度为0的待放置任务放置到任务队列并确定是否存在未放置任务的步骤。
17.可选的,在本发明第一方面的第三种实现方式中,所述根据所述待执行任务的任务类型执行所述待执行任务并确定所述任务队列是否存在所述未执行任务的步骤包括:
18.根据所述待执行任务对应的操作类型确定所述待执行任务的任务类型;
19.根据所述任务类型执行所述待执行任务并确定所述任务队列是否存在所述未执行任务。
20.可选的,在本发明第一方面的第四种实现方式中,所述根据所述任务类型根据所述待执行任务的任务类型执行所述待执行任务并确定所述任务队列是否存在所述未执行任务的步骤包括:
21.在所述任务类型为主线程任务时,在主线程执行所述待执行任务并确定所述任务队列是否存在所述未执行任务。
22.可选的,在本发明第一方面的第五种实现方式中,所述根据所述任务类型根据所述待执行任务的任务类型执行所述待执行任务并确定所述任务队列是否存在所述未执行任务的步骤包括:
23.在所述任务类型为子线程任务时,在子线程执行所述待执行任务并确定所述任务队列是否存在所述未执行任务。
24.可选的,在本发明第一方面的第六种实现方式中,所述在所述任务类型为子线程任务时,在子线程执行所述待执行任务并确定所述任务队列是否存在所述未执行任务的步骤包括:
25.在所述任务类型为子线程任务时,确定可用子线程的子线程数量以及所述待执行任务的任务数量;
26.在所述子线程数量大于等于所述任务数量时,在所述子线程执行所述待执行任务并确定所述任务队列是否存在所述未执行任务;
27.在所述子线程数量小于所述任务数量时,在所述待执行任务中确定待返回任务并将所述待返回任务放置至所述任务队列。
28.本发明第二方面提供了一种程序启动的加速装置,包括:
29.获取模块,用于在任务队列获取入度为0的待执行任务;
30.执行调度器模块,用于根据所述待执行任务的任务类型执行所述待执行任务并确定所述任务队列是否存在所述未执行任务;
31.判断模块,若存在所述未执行任务,用于筛选出依赖已执行任务的未执行任务,并将依赖所述已执行任务的未执行任务入度数减1,返回执行所述在任务队列获取入度为0的待执行任务的步骤,所述已执行任务为执行完毕的所述待执行任务;
32.输出模块,若不存在所述未执行任务,用于输出加速成功的提示信息。
33.本发明第三方面提供了一种移动终端,包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;所述至少一个处理器调用所述存储器中的所述指令,以使得所述移动终端执行上述的程序启动的加速方法。
34.本发明的第四方面提供了一种可读存储介质,所述可读存储介质中存储有指令,当其在设备上运行时,使得设备执行上述的程序启动的加速方法。
35.在本实施例中,在任务队列获取入度为0的待执行任务;根据所述待执行任务的任务类型执行所述待执行任务并确定所述任务队列是否存在所述未执行任务;若存在所述未执行任务,筛选出依赖已执行任务的未执行任务,并将依赖所述已执行任务的未执行任务入度数减1,返回执行所述在任务队列获取入度为0的待执行任务的步骤,所述已执行任务
为执行完毕的所述待执行任务;若不存在所述未执行任务,输出加速成功的提示信息。由于移动终端处理用于启动程序的任务队列时,可基于入度确定待执行任务,基于待执行任务的任务类型,可一次性处理入度为0的待执行任务,并且在待执行任务执行完毕时更新依赖其的未执行任务的入度,形成任务处理的闭环。相对于在主线程一个个执行任务,移动终端的启动速度快,提高了程序启动的加速效果。
附图说明
36.图1为本发明实施例中程序启动的加速方法的一个实施例示意图;
37.图2为本发明实施例中程序启动的加速方法的另一个实施例示意图;
38.图3为本发明实施例中程序启动的加速装置的一个实施例示意图;
39.图4为本发明实施例中移动终端的一个实施例示意图。
具体实施方式
40.本发明实施例提供了一种程序启动的加速方法、装置、移动终端及存储介质。
41.本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
42.为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1,本发明实施例中程序启动的加速方法的一个实施例包括:
43.101、在任务队列获取入度为0的待执行任务;
44.在本实施例的技术方案中,任务队列中的未执行任务关联有入度数;该步骤在任务队列中确定入度为0的待执行任务。
45.任务队列中任务与任务之间的关系以有向无环图的方式进行关联,容易理解的是,有向无环图指的是一个无回路的有向图。如果有一个非有向无环图,且a点出发向b经c可回到a,形成一个环。将从c到a的边方向改为从a到c,则变成有向无环图。有向无环图的生成树个数等于入度非零的节点的入度积。有向无环图是描述一项工程或系统的进行过程的有效工具。除最简单的情况之外,几乎所有的工程(project)都可分为若干个称作活动(activity)的子工程,而这些子工程之间,通常受着一定条件的约束,如其中某些子工程的开始必须在另一些子工程完成之后。对整个工程和系统,人们关心的是两个方面的问题:一是工程能否顺利进行:二是估算整个工程完成所必须的最短时间。这样两个问题都是可以通过对有向图进行拓扑排序和关键路径操作来解决。
46.102、根据所述待执行任务的任务类型执行所述待执行任务并确定所述任务队列是否存在所述未执行任务;
47.可选的,通过多个子线程执行所述待执行任务并确定所述任务队列是否存在未执行任务。
48.103、若存在所述未执行任务,筛选出依赖已执行任务的未执行任务,并将依赖所述已执行任务的未执行任务入度数减1,返回执行所述在任务队列获取入度为0的待执行任务的步骤,所述已执行任务为执行完毕的所述待执行任务;
49.在本实施例的技术方案中,当判定任务队列存在未执行任务,确定待执行任务的依赖任务,将上述依赖任务的入度减1,例如:待执行任务对应的操作类型为10,在执行完上述待执行任务时,任务队列里任存在未执行任务,则确定10个待执行任务中有多少个待执行任务还存在依赖任务,若为9个,则将9个依赖任务的入度减1,然后返回执行在任务队列获取入度为0的待执行任务的步骤,形成任务处理闭环。
50.可选的,本实施例的整个启动流程包括:
51.根据预先配置的任务依赖关系,梳理并输出排序后的任务队列:
52.注:以顶点的入度数(表示有多少个依赖任务,比如b需要依赖a,那b入度数为1,然后a执行后,b入度数就为0也可以执行)来判断依赖关系,
53.步骤1、首先判断至少有一个顶点,即任务,入度为0,否则一定是配置出错。
54.步骤2、若顶点入度》0,表示有一个前置依赖,还不能标记为可执行。因此把入度数0的比如任务a,先标记为可执行任务,放到输出队列中。
55.步骤3、然后把所有其他依赖任务a的不可执行任务入度数减1,
56.步骤4、重复步骤2直到所有任务都算好输出到队列中。
57.将输出的排序后的任务队列交由子线程任务调度器调度执行:
58.步骤5、将排序后的任务队列中,入度数为0,即可执行任务,筛选出来
59.步骤6、判断是否需要主线程执行,是则交由主线程直接执行,否则放到子线程调度执行
60.步骤7、子线程调度,先判断正在执行的任务是否已达调度器的最大可执行数,未达到则直接子线程执行,达到则放到等待队列中,等子线程执行完毕后再来跑这个任务
61.步骤8、子线程任务a执行完毕后,把所有依赖任务a的任务入度减1,重复步骤5直到所有任务执行完毕。
62.104、若不存在所述未执行任务,输出加速成功的提示信息。
63.在本实施例的技术方案中,当判定任务队列中无未执行任务,则用于启动程序的任务队列执行完毕,输出加速成功的提示信息。
64.可选的,任务队列的形成方式包括:将入度为0的待放置任务放置到任务队列并确定是否存在未放置任务;若存在所述未放置任务,将所述待执行任务的依赖任务的入度减1,返回执行所述将入度为0的待放置任务放置到任务队列并确定是否存在未放置任务的步骤;若不存在所述未放置任务,执行所述在任务队列获取入度为0的待执行任务的步骤。在本实施例的技术方案中,与执行阶段同理,以有向无环图的方式关联待放置任务,然后将待放置任务依次放置到任务队列。通过有向无环图拓扑排序梳理任务依赖关系,可输出按可执行度排序的任务队列。进一步的,本实施例要启动的应用程序为安卓应用程序。安卓应用程序是安卓系统智能手机的主要构成部分,实现了智能手机的多样性、多功能性,结合了办公功能、娱乐功能、生活实用功能等,对于安卓应用程序的具体种类,在此不作限定。
65.可选的,确定是否存在入度为0的待放置任务;若不存在所述待放置任务,输出配置异常的提示信息;若存在所述待放置任务,执行所述将入度为0的待放置任务放置到任务
队列并确定是否存在未放置任务的步骤。在本实施例的技术方案中,当放置阶段开始时,无入度为0的待放置任务,则说明配置异常,输出重新配置任务关系的提升信息。例如:启动应用;判定是否至少一个任务不需要依赖;若否,输出配置异常;若是,将入度数为0的任务a输出到任务队列中并判定是否还有任务未输出到队列;若有,将其他所有依赖任务a的任务入度数减1,返回执行判定是否还有任务未输出到队列;若否,将排序后的任务队列交由子线程任务调度器调度执行;将队列中入度为0的可执行任务筛选出来,判断是否主线程可执行完毕;若是,主线程直接执行任务;若否,进行子线程任务调度;在任务执行完毕,判定应用完成启动流程。
66.本发明实施例中,在任务队列获取入度为0的待执行任务;根据所述待执行任务的任务类型执行所述待执行任务并确定所述任务队列是否存在所述未执行任务;若存在所述未执行任务,筛选出依赖已执行任务的未执行任务,并将依赖所述已执行任务的未执行任务入度数减1,返回执行所述在任务队列获取入度为0的待执行任务的步骤,所述已执行任务为执行完毕的所述待执行任务;若不存在所述未执行任务,输出加速成功的提示信息。由于移动终端处理用于启动程序的任务队列时,可基于入度确定待执行任务,基于待执行任务的任务类型,可一次性处理入度为0的待执行任务,并且在待执行任务执行完毕时更新依赖其的未执行任务的入度,形成任务处理的闭环。相对于在主线程一个个执行任务,移动终端的启动速度快,提高了程序启动的加速效果。
67.请参阅图2,本发明实施例中程序启动的加速方法的另一个实施例包括:
68.201、根据所述待执行任务对应的操作类型确定所述待执行任务的任务类型;
69.在本实施例的技术方案中,任务类型包括主线程任务或者子线程任务。当待执行任务对应的操作类型只能由主线程执行时,例如ui操作,则判定任务类型为主线程任务。具体的,当待执行任务的操作类型不限定为主线程执行时,基于子线程进行执行。
70.可选的,在所述任务类型为主线程任务时,在主线程执行所述待执行任务并确定所述任务队列是否存在所述未执行任务。
71.可选的,在所述任务类型为子线程任务时,在子线程执行所述待执行任务并确定所述任务队列是否存在所述未执行任务。其中,任务类型非主线程任务即为子线程任务。
72.可选的,在所述任务类型为子线程任务时,确定可用子线程的子线程数量以及所述待执行任务的任务数量;在所述子线程数量大于等于所述任务数量时,在所述子线程执行所述待执行任务并确定所述任务队列是否存在所述未执行任务;在所述子线程数量小于所述任务数量时,在所述待执行任务中确定待返回任务并将所述待返回任务放置至所述任务队列。在本实施例的技术方案中,当待执行任务大于可用线程的数量时,在待执行任务中确定优先级高的目标待执行任务,优先执行目标待执行任务,优先级低的待返回任务则重新放置回任务队列,保留至下一执行周期执行。
73.202、根据所述任务类型执行所述待执行任务并确定所述任务队列是否存在所述未执行任务。
74.本发明实施例中,基于待执行任务对应的操作类型,可确定是否可以使用子线程执行的任务,若是,可基于子线程实现多线程执行,缩短了任务耗时,加速了应用启动。
75.上面对本发明实施例中程序启动的加速方法进行了描述,下面对本发明实施例中程序启动的加速装置进行描述,请参阅图3,本发明实施例中程序启动的加速装置一个实施
例包括:
76.获取模块301,用于在任务队列获取入度为0的待执行任务;
77.执行调度器模块302,用于根据所述待执行任务的任务类型执行所述待执行任务并确定所述任务队列是否存在所述未执行任务;
78.判断模块303,若存在所述未执行任务,用于筛选出依赖已执行任务的未执行任务,并将依赖所述已执行任务的未执行任务入度数减1,返回执行所述在任务队列获取入度为0的待执行任务的步骤,所述已执行任务为执行完毕的所述待执行任务;
79.输出模块304,若不存在所述未执行任务,用于输出加速成功的提示信息。
80.可选的,获取模块301还可以具体用于:
81.将入度为0的待放置任务放置到任务队列并确定是否存在未放置任务;
82.若存在所述未放置任务,筛选出依赖已放置任务的未放置任务,并将依赖所述已放置任务的未放置任务的入度数减1,返回执行所述将入度为0的待放置任务放置到任务队列并确定是否存在未放置任务的步骤,所述已放置任务为放置完毕的所述待放置任务;
83.若不存在所述未放置任务,将所述任务队列中已放置任务的入度数还原为放置前的数值,得到所述待执行任务,执行所述在任务队列获取入度为0的待执行任务的步骤。
84.可选的,获取模块301还可以具体用于:
85.确定是否存在入度为0的待放置任务;
86.若不存在所述待放置任务,输出配置异常的提示信息;
87.若存在所述待放置任务,执行所述将入度为0的待放置任务放置到任务队列并确定是否存在未放置任务的步骤。
88.可选的,执行调度器模块302还可以具体用于:
89.根据所述待执行任务对应的操作类型确定所述待执行任务的任务类型;
90.根据所述任务类型执行所述待执行任务并确定所述任务队列是否存在所述未执行任务。
91.可选的,执行调度器模块302还可以具体用于:
92.在所述任务类型为主线程任务时,在主线程执行所述待执行任务并确定所述任务队列是否存在所述未执行任务。
93.可选的,执行调度器模块302还可以具体用于:
94.在所述任务类型为子线程任务时,在子线程执行所述待执行任务并确定所述任务队列是否存在所述未执行任务。
95.可选的,执行调度器模块302还可以具体用于:
96.在所述任务类型为子线程任务时,确定可用子线程的子线程数量以及所述待执行任务的任务数量;
97.在所述子线程数量大于等于所述任务数量时,在所述子线程执行所述待执行任务并确定所述任务队列是否存在所述未执行任务;
98.在所述子线程数量小于所述任务数量时,在所述待执行任务中确定待返回任务并将所述待返回任务放置至所述任务队列。
99.本发明实施例中,在任务队列获取入度为0的待执行任务;根据所述待执行任务的任务类型执行所述待执行任务并确定所述任务队列是否存在所述未执行任务;若存在所述
未执行任务,筛选出依赖已执行任务的未执行任务,并将依赖所述已执行任务的未执行任务入度数减1,返回执行所述在任务队列获取入度为0的待执行任务的步骤,所述已执行任务为执行完毕的所述待执行任务;若不存在所述未执行任务,输出加速成功的提示信息。由于移动终端处理用于启动程序的任务队列时,可基于入度确定待执行任务,基于待执行任务的任务类型,可一次性处理入度为0的待执行任务,并且在待执行任务执行完毕时更新依赖其的未执行任务的入度,形成任务处理的闭环。相对于在主线程一个个执行任务,移动终端的启动速度快,提高了程序启动的加速效果。
100.上面图3从模块化功能实体的角度对本发明实施例中的程序启动的加速装置进行详细描述,下面从硬件处理的角度对本发明实施例中移动终端进行详细描述。
101.图4是本发明实施例提供的一种移动终端的结构示意图,该移动终端500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,cpu)510(例如,一个或一个以上处理器)和存储器520,一个或一个以上存储应用程序533或数据532的存储介质530(例如一个或一个以上海量存储设备)。其中,存储器520和存储介质530可以是短暂存储或持久存储。存储在存储介质530的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对移动终端500中的一系列指令操作。更进一步地,处理器510可以设置为与存储介质530通信,在移动终端500上执行存储介质530中的一系列指令操作。
102.基于移动终端500还可以包括一个或一个以上电源540,一个或一个以上有线或无线网络接口550,一个或一个以上输入输出接口560,和/或,一个或一个以上操作系统531,例如windows serve,mac os x,unix,linux,freebsd等等。本领域技术人员可以理解,图4示出的移动终端结构并不构成对基于移动终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
103.本发明还提供一种可读存储介质,该可读存储介质可以为非易失性可读存储介质,该可读存储介质也可以为易失性可读存储介质,所述可读存储介质中存储有指令,当所述指令在设备上运行时,使得设备执行所述程序启动的加速方法的步骤。
104.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统或装置、单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
105.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台设备(可以是个人移动终端,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
106.以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表