CN110990137B - 应用程序的功能模块调度方法、调度信息处理方法及设备 - Google Patents

应用程序的功能模块调度方法、调度信息处理方法及设备 Download PDF

Info

Publication number
CN110990137B
CN110990137B CN201911212095.2A CN201911212095A CN110990137B CN 110990137 B CN110990137 B CN 110990137B CN 201911212095 A CN201911212095 A CN 201911212095A CN 110990137 B CN110990137 B CN 110990137B
Authority
CN
China
Prior art keywords
target data
scheduling
functional module
data type
information
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.)
Active
Application number
CN201911212095.2A
Other languages
English (en)
Other versions
CN110990137A (zh
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.)
Douyin Vision Co Ltd
Douyin Vision Beijing Co Ltd
Original Assignee
Beijing ByteDance Network 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 ByteDance Network Technology Co Ltd filed Critical Beijing ByteDance Network Technology Co Ltd
Priority to CN201911212095.2A priority Critical patent/CN110990137B/zh
Publication of CN110990137A publication Critical patent/CN110990137A/zh
Application granted granted Critical
Publication of CN110990137B publication Critical patent/CN110990137B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种应用程序的功能模块调度方法、调度信息处理方法及设备,其调度方法包括:分别确定所述应用程序的各个功能模块是否与目标辅助类型中携带的功能模块调度信息匹配,所述目标辅助类型是根据用于声明待调度的功能模块的代码注解生成的,所述用于声明待调度的功能模块的代码注解携带在所述应用程序编译前的代码中;将匹配的功能模块添加到待执行队列中;监测所述待执行队列中的各个功能模块的执行时机;调度满足执行时机的功能模块。基于声明式的功能模块调度信息对移动终端设备应用程序的功能模块进行调度,将功能模块的初始化分散到应用程序的运行过程中,而非集中在应用程序的启动阶段。

Description

应用程序的功能模块调度方法、调度信息处理方法及设备
技术领域
本发明涉及计算机技术领域,更具体地,涉及一种应用程序的功能模块调度方法、调度信息处理方法及设备。
背景技术
随着移动互联网行业的发展,很多以往在PC(个人电脑)的网页端完成的业务,如今都迁移到了移动终端设备来完成。因此,移动终端的app(应用程序)的代码量迅速膨胀,运行逻辑复杂度日益增长,更是出现很多涵盖绝大多数移动应用场景的“超级app”。
对于大型(代码量大)的app而言,集成上百个功能库(以下也成为功能模块)已经是很常见的现象,这些功能模块的初始化加上app本身的初始化都集中在app的启动阶段,使得app启动阶段的代码变得冗长而且难以维护,不仅给app的启动性能带来了负面的影响,也严重降低了app开发工程的开发效率。
发明内容
鉴于上述app的功能模块初始化带来的问题,本发明提出了一种应用程序的功能模块调度方法及对应的移动终端设备,其基于声明式的功能模块调度信息对移动终端设备应用程序的功能模块进行调度,将功能模块的初始化分散到应用程序的运行过程中,而非集中在应用程序的启动阶段。
第一方面,本发明实施例提供一种应用程序的功能模块调度方法,包括:
在目标数据类型中分别查找应用程序的各个功能模块的调度信息,目标数据类型是通过编译用于声明多个功能模块的代码注解生成的,用于声明待调度的功能模块的代码注解携带在该应用程序编译前的代码中,调度信息至少包括功能模块的调度时机;
将查找到符合指定要求的调度信息的功能模块添加到待执行队列中;
监测待执行队列中的各个功能模块的调度时机;
对调度时机被触发的功能模块进行调度。
本发明实施例提供的方法,将应用程序的功能模块的初始化(调度)分散到应用程序运行过程中,而非集中在应用程序的启动阶段,大大减少了应用程序启动阶段的代码,有助于降低代码的维护难度,且缩减了应用程序启动所需的时间。
为了能够将功能模块的初始化分散到应用程序运行过程中,本发明实施例采用了声明接口,即利用代码注解对功能模块进行声明,进而对代码注解进行编译从而得到包括功能模块的调度信息的目标数据类型,通过在目标数据类型中查找各个功能模块的调度信息,将符合条件的功能模块添加到待执行队列中,进而监测待执行队列中的各个功能模块的调度时机是否被触发,实现对功能模块的分散调度。
本发明实施例中,根据目标数据类型的实现方式的不同,在目标数据类型中分别查找应用程序的各个功能模块的调度信息的实现方式也不同。
在目标数据类型的一种实现方式中,目标数据类型包括第一目标数据类型和第二目标数据类型,相应的,上述查找调度信息的实现方式可以为:分别获取应用程序的各个功能模块的标识信息;分别查找各个功能模块的标识信息关联的第一目标数据类型,第一目标数据类型中包括功能模块的调度信息的索引;根据查找到的调度信息的索引,在第二目标数据类型中查找候选功能模块的调度信息的取值,第二目标数据类型中包括功能模块的调度信息的取值,候选功能模块为查找到标识信息关联的第一目标数据类型的功能模块。
上述实现方式中,不仅有功能模块关联的第一目标数据类型,还有面向多个功能模块的第二目标数据类型。其中,第一目标数据类型中包括有功能模块的调度信息的索引,在第二目标数据类型中包括不同功能模块的调度信息的索引及取值。这种实现方式便于信息扩展以及代码维护。
基于这种目标数据类型的实现方式,在进行调度信息查找时,先查找功能模块关联的调度信息,若未查找到,则意味着该功能模块未被声明,无法被调度,无需再进一步查找其他调度信息,避免了不必要的查找过程对内存的占用。
在此基础上,第二目标数据类型可以仅有一个,也可以有多个。无论第一目标数据类型的数量,一种情况下,不同类型的调度信息可以携带在同一个第二目标数据类型中。为了便于数据索引及代码管理,另一种情况下,每个第二目标数据类型对应一种类型的调度信息,且包括多个功能模块的同一类型的调度信息。
在此基础上,上述调度信息可以但不仅限于包括以下至少一种类型:
功能模块的调度时机,功能模块的调度条件,功能模块的调度线程,功能模块调度时所需传入的参数,功能模块的内容信息,功能模块的执行时序信息。
由于每个功能模块的内容信息以及功能模块的执行时序信息均不相同,且功能模块的内容信息较大,因此不适宜保存在第二目标数据类型中。相应的,第一目标数据类型中还包括功能模块的内容信息和功能模块的执行时序信息;功能模块的调度时机,功能模块的调度条件,功能模块的调度线程,和功能模块调度时所需传入的参数分别对应一个第二目标数据类型。
那么,上述在目标数据类型中分别查找应用程序的各个功能模块的调度信息的步骤中还可以包括:在第一目标数据类型中查找候选功能模块的内容信息和执行时序信息的取值。
在目标数据类型的另一种实现方式中,每个目标数据类型仅与一个功能模块的标识信息关联,相应的,上述在目标数据类型中分别查找应用程序的各个功能模块的调度信息的实现方式可以是:分别获取应用程序的各个功能模块的标识信息;分别查找各个功能模块的标识信息关联的目标数据类型;在查找到的目标数据类型中查找调度信息。
在上述任意方法实施例的基础上,上述监测待执行队列中的各个功能模块的调度时机的实现方式可以是:调用时机函数,该时机函数用于触发所述待执行队列中的各个功能模块的调度时机,时机函数是通过编译上述代码注解中的调度时机代码注解生成的;监测时机函数的触发时机动作。
第二方面,本发明实施例还提供一种移动终端,包括处理器和存储器;
存储器用于存储执行上述任意方法实施例的程序;
处理器被配置为执行存储器中存储的程序。
本发明实施例提供的移动终端,将应用程序的功能模块的初始化(调度)分散到应用程序运行过程中,而非集中在应用程序的启动阶段,大大减少了应用程序启动阶段的代码,有助于降低代码的维护难度,且缩减了应用程序启动所需的时间。
第三方面,本发明实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储执行上述任意方法实施例的程序。
第四方面,本发明实施例一种应用程序的功能模块调度信息处理方法,包括:
从应用程序编译前的代码中读取用于声明多个功能模块的代码注解的类型信息;
根据每个类型信息分别对应的预定编译规则,分别对每个类型信息各自对应的所述代码注解进行编译,得到目标数据类型,目标数据类型中包括功能模块的调度信息。
本发明实施例提供的方法采用了声明接口,即利用代码注解对功能模块进行声明,进而对代码注解进行编译从而得到包括功能模块的调度信息的目标数据类型,以便应用程序在移动终端上运行时,可以通过在目标数据类型中查找各个功能模块的调度信息,将符合条件的功能模块添加到待执行队列中,进而监测待执行队列中的各个功能模块的调度时机是否被触发,实现对功能模块的分散调度。
另外,本发明实施例提供的方法,大大减少了应用程序启动阶段的代码,有助于降低代码的维护难度,提高应用程序的开发效率。
一种实现方式中,目标数据类型包括第一目标数据类型和第二目标数据类型,第一目标数据类型中包括功能模块的调度信息的索引,第二目标数据类型中包括功能模块的调度信息的取值,候选功能模块为查找到标识信息关联的第一目标数据类型的功能模块。这种实现方式便于信息扩展以及代码维护。
在此基础上,可选的,目标数据类型包括至少一个第二目标数据类型,每个第二目标数据类型对应一种类型的调度信息,且包括多个功能模块的同一类型的调度信息。那么,在后续的调用信息查找过程中,可以先查找功能模块关联的调度信息,若未查找到,则意味着该功能模块未被声明,无法被调度,无需再进一步查找其他调度信息,避免了不必要的查找过程对内存的占用。
进一步地,调度信息可以但不仅限于包括以下至少一种类型:
功能模块的调度时机,功能模块的调度条件,功能模块的调度线程,功能模块调度时所需传入的参数,功能模块的内容信息,功能模块的执行时序信息。
由于每个功能模块的内容信息以及功能模块的执行时序信息均不相同,且功能模块的内容信息较大,因此不适宜保存在第二目标数据类型中。相应的,第一目标数据类型中还包括功能模块的内容信息和功能模块的执行时序信息;功能模块的调度时机,功能模块的调度条件,功能模块的调度线程,和功能模块调度时所需传入的参数分别对应一个第二目标数据类型。
在上述任意代码编译阶段的方法实施例的基础上,还可以按照预定的规则对上述代码注解进行合法性检查。
通过在编译阶段进行代码注解的合法性检查,确保了目标数据类型的合法性,进而确保了后续利用目标数据类型进行调度的稳定性。
第五方面,本发明实施例提供一种计算机设备,包括处理器和存储器;
存储器用于存储执行上述任意调度信息处理方法实施例的程序;
处理器被配置为执行存储器中存储的程序。
本发明实施例提供的计算机设备采用了声明接口,即利用代码注解对功能模块进行声明,进而对代码注解进行编译从而得到包括功能模块的调度信息的目标数据类型,以便应用程序在移动终端上运行时,可以通过在目标数据类型中查找各个功能模块的调度信息,将符合条件的功能模块添加到待执行队列中,进而监测待执行队列中的各个功能模块的调度时机是否被触发,实现对功能模块的分散调度。
另外,本发明实施例提供的计算机设备,大大减少了应用程序启动阶段的代码,有助于降低代码的维护难度,提高应用程序的开发效率。
第六方面,本发明实施例提供一种计算机可读存储介质,该计算机可读存储介质中存储执行上述任意调度信息处理方法实施例的程序。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了根据本发明一个实施例的功能模块调度方法流程图;
图2示出了根据本发明一个实施例的调度信息处理方法流程图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
在本发明的说明书和权利要求书及上述附图中的描述的一些流程中,可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。
深入移动端应用场景、泛用性易用性强、额外开销小、具有编译期检查的启动任务框架(又称功能模块调度框架)。该框架使用声明式的接口,提供了丰富的配置参数(调度信息),从而增强泛用性和易用性;使用编译期生成辅助类型(至少包括目标数据类型和时机函数)的方法,减小了任务调度的额外开销;通过编译期对声明校验,达到了提早发现代码错误的效果。
在使用本框架后,可以明显的缩减应用的代码复杂度,有效的安排启动任务顺序和线程,达到提高开发效率,增强app性能的效果。
本发明实施例提供一种应用程序的功能模块调度方法,该方法应用在移动终端的应用程序的运行阶段,或者应用在移动终端的应用程序的启动阶段以及运行阶段,用于对应用程序的各个功能模块进行调度管理。
本发明实施例中,应用程序的功能模块也可称为任务,以下不再赘述。
如图1所示,本发明实施例提供的应用程序的功能模块调度方法包括如下操作:
步骤101、在目标数据类型中分别查找应用程序的各个功能模块的调度信息,目标数据类型是通过编译用于声明多个功能模块的代码注解生成的,用于声明待调度的功能模块的代码注解携带在该应用程序编译前的代码中,调度信息至少包括功能模块的调度时机。
本发明实施例中,目标数据类型特指根据上述代码注解编译得到的数据类型,以与应用程序中的其他数据类型进行区分。
本发明实施例中,可以依次针对各个功能模块进行查找,也可以并行对多个功能模块同时进行查找。
步骤102、将查找到符合指定要求的调度信息的功能模块添加到待执行队列中。
本发明实施例中,通过上述代码注解声明了功能模块的多种调度信息,这些种类的调度信息即为指定类型的调度信息,构成完整调度信息。
本发明实施例中,将功能模块添加到待执行队列中的实现方式有多种,其中一种实现方式是将功能模块的标识信息添加到待执行队列中。
本发明实施例也不对待执行队列的具体实现结构进行限定,可利用现有多种数据结构实现。
本发明实施例中,可以按照查找到符合指定要求的调度信息的时序将相应的功能模块添加到待执行队列中,当然也可以按照其他预先约定的规则进行添加。
上述步骤101和步骤102为收集待调度功能模块(又称收集启动任务)的过程。其中,步骤101可以在应用程序的启动过程结束之后执行,也可以在应用程序的启动过程中即开始执行。
步骤103、监测待执行队列中的各个功能模块的调度时机。
本发明实施例中,监测待执行队列中的各个功能模块的调度时机,具体是指监控这些功能模块的调度时机是否被触发。
步骤104、对调度时机被触发的功能模块进行调度。
本发明实施例中,步骤103和步骤104为功能模块调度过程(又称任务启动过程)。
其中,收集启动任务过程和任务启动过程可以在一个线程上实现,也可以通过不同的线程分别实现,本发明实施例对此不做限定。
本发明实施例提供的方法,将应用程序的功能模块的初始化(调度)分散到应用程序运行过程中,而非集中在应用程序的启动阶段,大大减少了应用程序启动阶段的代码,有助于降低代码的维护难度,且缩减了应用程序启动所需的时间。
为了能够将功能模块的初始化分散到应用程序运行过程中,本发明实施例采用了声明接口,即利用代码注解对功能模块进行声明,进而对代码注解进行编译从而得到包括功能模块的调度信息的目标数据类型,通过在目标数据类型中查找各个功能模块的调度信息,将符合条件的功能模块添加到待执行队列中,进而监测待执行队列中的各个功能模块的调度时机是否被触发,实现对功能模块的分散调度。
本发明实施例中,根据目标数据类型的实现方式的不同,在目标数据类型中分别查找应用程序的各个功能模块的调度信息的实现方式也不同。
在目标数据类型的一种实现方式中,目标数据类型包括第一目标数据类型和第二目标数据类型,相应的,上述查找调度信息的实现方式可以为:分别获取应用程序的各个功能模块的标识信息;分别查找各个功能模块的标识信息关联的第一目标数据类型,第一目标数据类型中包括功能模块的调度信息的索引;根据查找到的调度信息的索引,在第二目标数据类型中查找候选功能模块的调度信息的取值,第二目标数据类型中包括功能模块的调度信息的取值,候选功能模块为查找到标识信息关联的第一目标数据类型的功能模块。
上述实现方式中,不仅有功能模块的标识信息关联的第一目标数据类型,还有面向多个功能模块的第二目标数据类型。其中,第一目标数据类型中包括有功能模块的调度信息的索引,在第二目标数据类型中包括不同功能模块的调度信息的索引及取值。这种实现方式便于信息扩展以及代码维护。
具体的,如果在第二目标数据类型中查找到候选功能模块的调度信息的取值,意味着查找到该候选功能模块的调度信息,反之,意味着没有查找到该候选功能模块的调度信息,也就无法将该候选功能模块添加至待执行队列中。
本发明实施例中,若未查找到功能模块的标识信息关联的第一目标数据类型,或者未查找到候选功能模块的调度信息的取值,一种实现方式中,可以通过移动终端发出告警信息,该告警信息中至少包括对应功能模块的标识信息,还可以包含告警原因信息。本发明实施例中,该告警信息可以通过网络发送给应用程序开发者的终端或服务器,也可以通过移动终端发送给移动终端用户(例如通过功放播放该告警信息,通过显示屏显示该告警信息等)。另一种实现方式中,也可以仅结束对功能模块的调用,不进行告警处理。
基于这种目标数据类型的实现方式,在进行调度信息查找时,先查找功能模块关联的调度信息,若未查找到,则意味着该功能模块未被声明,无法被调度,无需再进一步查找其他调度信息,避免了不必要的查找过程对内存的占用。
在此基础上,第二目标数据类型可以仅有一个,也可以有多个。无论第一目标数据类型的数量,一种情况下,不同类型的调度信息可以携带在同一个第二目标数据类型中。为了便于数据索引及代码管理,另一种情况下,每个第二目标数据类型对应一种类型的调度信息,且包括多个功能模块的同一类型的调度信息。
若第二目标数据类型有多个,那么,可以按照预定的顺序依次在各个第二目标数据类型中查找候选功能模块的调度信息的取值,也可以并行在各个第二目标数据类型中查找候选功能模块的调度信息的取值。
在此基础上,上述调度信息可以但不仅限于包括以下至少一种类型:
功能模块的调度时机,功能模块的调度条件,功能模块的调度线程,功能模块调度时所需传入的参数,功能模块的内容信息,功能模块的执行时序信息。
下面通过具体实例说明上述各个调度信息:
功能模块的调度时机(又称任务执行时机)可以是:目标界面被调度时;
功能模块的调度条件(又称任务执行条件)是功能模块被调度时所需要满足的条件,例如,其可以是:需选定目标图像;
功能模块的调度线程(又称任务执行线程)是指加载功能模块的线程;
功能模块调度时所需传入的参数(又称任务执行参数),例如,其可以是:系统当前时间;
功能模块的内容信息(又称任务内容),用于描述功能模块的内容,可以但不仅限于是该功能模块所实现的功能描述;
功能模块的执行时序信息(又称任务执行的先后关系),用于描述本功能模块与其他功能模块的执行时序,例如,其可以是:在功能模块N之后执行。
由于每个功能模块的内容信息以及功能模块的执行时序信息均不相同,且功能模块的内容信息较大,因此不适宜保存在第二目标数据类型中。相应的,第一目标数据类型中还包括功能模块的内容信息和功能模块的执行时序信息;功能模块的调度时机,功能模块的调度条件,功能模块的调度线程,和功能模块调度时所需传入的参数分别对应一个第二目标数据类型。
那么,上述在目标数据类型中分别查找应用程序的各个功能模块的调度信息的步骤中还可以包括:在第一目标数据类型中查找候选功能模块的内容信息和执行时序信息的取值。
在目标数据类型的另一种实现方式中,每个目标数据类型仅与一个功能模块的标识信息关联,相应的,上述在目标数据类型中分别查找应用程序的各个功能模块的调度信息的实现方式可以是:分别获取应用程序的各个功能模块的标识信息;分别查找各个功能模块的标识信息关联的目标数据类型;在查找到的目标数据类型中查找调度信息。
在上述任意方法实施例的基础上,上述监测待执行队列中的各个功能模块的调度时机的实现方式可以是:调用时机函数,该时机函数用于触发所述待执行队列中的各个功能模块的调度时机,时机函数是通过编译上述代码注解中的调度时机代码注解生成的;监测时机函数的触发时机动作。
本发明实施例还提供一种移动终端,包括处理器和存储器;
存储器用于存储执行上述任意方法实施例的程序;
处理器被配置为执行存储器中存储的程序。
本发明实施例提供的移动终端,将应用程序的功能模块的初始化(调度)分散到应用程序运行过程中,而非集中在应用程序的启动阶段,大大减少了应用程序启动阶段的代码,有助于降低代码的维护难度,且缩减了应用程序启动所需的时间。
本发明实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储执行上述任意方法实施例的程序。
如图2所示,本发明实施例一种应用程序的功能模块调度信息处理方法,具体包括如下操作:
步骤201、从应用程序编译前的代码中读取用于声明多个功能模块的代码注解的类型信息。
步骤202、根据每个类型信息分别对应的预定编译规则,分别对每个类型信息各自对应的所述代码注解进行编译,得到目标数据类型,目标数据类型中包括功能模块的调度信息。
本发明实施例不对编译规则进行限定,实际应用中,根据具体的代码注解的类型以及需求确定。
本发明实施例提供的方法采用了声明接口,即利用代码注解对功能模块进行声明,进而对代码注解进行编译从而得到包括功能模块的调度信息的目标数据类型,以便应用程序在移动终端上运行时,可以通过在目标数据类型中查找各个功能模块的调度信息,将符合条件的功能模块添加到待执行队列中,进而监测待执行队列中的各个功能模块的调度时机是否被触发,实现对功能模块的分散调度。
另外,本发明实施例提供的方法,大大减少了应用程序启动阶段的代码,有助于降低代码的维护难度,提高应用程序的开发效率。
一种实现方式中,目标数据类型包括第一目标数据类型和第二目标数据类型,第一目标数据类型中包括功能模块的调度信息的索引,第二目标数据类型中包括功能模块的调度信息的取值,候选功能模块为查找到标识信息关联的第一目标数据类型的功能模块。这种实现方式便于信息扩展以及代码维护。
在此基础上,可选的,目标数据类型包括至少一个第二目标数据类型,每个第二目标数据类型对应一种类型的调度信息,且包括多个功能模块的同一类型的调度信息。那么,在后续的调用信息查找过程中,可以先查找功能模块关联的调度信息,若未查找到,则意味着该功能模块未被声明,无法被调度,无需再进一步查找其他调度信息,避免了不必要的查找过程对内存的占用。
进一步地,调度信息可以但不仅限于包括以下至少一种类型:
功能模块的调度时机,功能模块的调度条件,功能模块的调度线程,功能模块调度时所需传入的参数,功能模块的内容信息,功能模块的执行时序信息。
由于每个功能模块的内容信息以及功能模块的执行时序信息均不相同,且功能模块的内容信息较大,因此不适宜保存在第二目标数据类型中。相应的,第一目标数据类型中还包括功能模块的内容信息和功能模块的执行时序信息;功能模块的调度时机,功能模块的调度条件,功能模块的调度线程,和功能模块调度时所需传入的参数分别对应一个第二目标数据类型。
在上述任意代码编译阶段的方法实施例的基础上,还可以按照预定的规则对上述代码注解进行合法性检查。
通过在编译阶段进行代码注解的合法性检查,确保了目标数据类型的合法性,进而确保了后续利用目标数据类型进行调度的稳定性。
下面将结合一更具体的实施例,对本发明实施例提供的调度信息处理方法以及功能模块的调度方法进行说明。
在该实施例中,任务声明接口(又称功能模块声明接口)用于声明功能模块(具体是声明功能模块的各种调度信息),以生成辅助类型。
本发明实施例中,任务声明接口通过代码注解实现,更具体的,通过JAVA注解实现。
本发明实施例中,由任务执行模块在应用程序运行时对已经声明的任务进行调度和执行。作为举例而非限定,该任务执行模块可以分为启动任务收集子模块和任务执行子模块,分别在不同的线程上执行。
在应用程序的代码开发阶段,在该代码中添加用于声明功能模块的JAVA注解。JAVA注解主要包括以下声明项(即调度信息):
任务执行时机:任务将会被触发执行的时机。
任务执行线程:任务将会在哪些线程上被执行。
任务执行条件:任务在被执行时需要满足哪些条件。
任务执行参数:任务在执行时所需传入的参数。
任务描述:描述任务内容,任务执行的先后关系,任务所关联的执行时机、执行线程、执行条件、执行参数(通过索引关联)等。
其中,任务执行时机、任务执行线程、任务执行条件、任务执行参数面向多个功能模块,以任务执行时机为例,会声明应用程序中多个任务的执行时机;而任务描述与具体的功能模块关联,其中会明确该任务的执行时机、执行条件、执行线程等。
对JAVA注解进行合法性检查(又称声明检查)。本发明实施例不对声明检查的具体内容和形式进行限定,实际应用中,可以根据需要实现。
作为举例而非限定,本实施例中,在应用程序编译时对以下合法性进行检查,如果检查未通过则编译失败,并提示相应错误:
任务执行时机声明语法是否正确。
任务执行线程声明语法是否正确。
任务执行条件声明语法是否正确。
任务执行参数声明语法是否正确。
任务描述声明语法是否正确。
任务执行时机名称是否有重复;任务执行时机先后顺序声明是否准确。
任务执行线程名称是否有重复;任务执行线程名称是否合法。
任务执行条件名称是否重复;任务执行条件名称是否合法。
任务描述所关联的时机、线程、条件、参数等是否已经被声明。
任务描述提供的任务先后顺序是否正确,是否存在环形依赖。
若通过合法性检查,则根据以上声明项,通过编译自动生成以下辅助类型,以便在运行时进行任务调度与执行。
针对任务执行时机生成的辅助类型:执行时机数据类型(第二目标数据类型的一种),时机函数,用于触发任务执行,时机查询类型,用于快速查询时机,以便代码开发人员进行维护。
针对任务执行线程生成的辅助类型:线程定义函数,用于生成预定义的线程。
针对任务执行条件生成的辅助类型:执行条件数据类型(第二目标数据类型的一种),执行条件函数,用于供代码开发人员修改当前执行条件,执行条件查询类型,用于快速查询执行条件。
针对任务描述生成的辅助类型:任务描述类型(第二目标数据类型的一种),将任务描述的声明转化为函数,任务查询类型,用于快速查询任务。
任务执行模块在应用程序运行时,按照之前所声明的规则收集启动任务并执行启动任务。
其中,收集启动任务过程如下:第一步,需要确认任务是否被声明过,如果没有则视为非法任务,并发出警报;第二步,需要确认任务所关联的时机、线程是否被声明过,如果没有则视为非法任务,并发出警报;第三步,需要确认任务所关联的时机是否已经被错过,如果是则忽略该任务;第四部,需要确认任务所关联的条件是否符合,如果不符合则忽略该任务;最后,将任务加入等待队列中,等到关联时机触发时执行任务。
执行启动过程如下:第一步,需要调用时机函数,来触发某个预先声明好的时机。第二步,判断该时机是否按照预先声明的规则被触发,否则发出警报器。第三步,判断任务执行模块是否已经收集到所有预先定义将要在该时机执行的任务,否则发出警报。第四部,从等待队列中筛选出关联该时机的任务,如果任务没有前置条件,则分发到关联线程上执行;如果有前置条件,需要等到前置条件完成后再执行。
本发明实施例提供还一种计算机设备,包括处理器和存储器;
存储器用于存储执行上述任意调度信息处理方法实施例的程序;
处理器被配置为执行存储器中存储的程序。
本发明实施例提供的计算机设备采用了声明接口,即利用代码注解对功能模块进行声明,进而对代码注解进行编译从而得到包括功能模块的调度信息的目标数据类型,以便应用程序在移动终端上运行时,可以通过在目标数据类型中查找各个功能模块的调度信息,将符合条件的功能模块添加到待执行队列中,进而监测待执行队列中的各个功能模块的调度时机是否被触发,实现对功能模块的分散调度。
另外,本发明实施例提供的计算机设备,大大减少了应用程序启动阶段的代码,有助于降低代码的维护难度,提高应用程序的开发效率。
本发明实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储执行上述任意调度信息处理方法实施例的程序。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁盘或光盘等。
以上对本发明实施例所提供的一种移动终端进行了详细介绍,对于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
上述所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

Claims (11)

1.一种应用程序的功能模块调度方法,其特征在于,包括:
在目标数据类型中分别查找所述应用程序的各个功能模块的调度信息,所述目标数据类型是通过编译用于声明多个功能模块的代码注解生成的,所述用于声明待调度的功能模块的代码注解携带在所述应用程序编译前的代码中,所述调度信息至少包括功能模块的调度时机;
将查找到符合指定要求的调度信息的功能模块添加到待执行队列中;
监测所述待执行队列中的各个功能模块的调度时机;
对调度时机被触发的功能模块进行调度;
所述目标数据类型包括第一目标数据类型和第二目标数据类型,所述在目标数据类型中分别查找所述应用程序的各个功能模块的调度信息,包括:
分别获取所述应用程序的各个功能模块的标识信息;
分别查找各个功能模块的标识信息关联的第一目标数据类型,所述第一目标数据类型中包括功能模块的调度信息的索引;
根据查找到的调度信息的索引,在第二目标数据类型中查找候选功能模块的调度信息的取值,所述第二目标数据类型中包括功能模块的调度信息的取值,所述候选功能模块为查找到标识信息关联的第一目标数据类型的功能模块。
2.根据权利要求1所述的应用程序的功能模块调度方法,其特征在于,所述目标数据类型包括至少一个第二目标数据类型,每个第二目标数据类型对应一种类型的调度信息,且包括多个功能模块的同一类型的调度信息;
所述调度信息包括以下至少一种类型:
功能模块的调度时机,功能模块的调度条件,功能模块的调度线程,功能模块调度时所需传入的参数,功能模块的内容信息,功能模块的执行时序信息。
3.根据权利要求2所述的应用程序的功能模块调度方法,其特征在于,所述第一目标数据类型中还包括所述功能模块的内容信息和所述功能模块的执行时序信息;
所述功能模块的调度时机,所述功能模块的调度条件,所述功能模块的调度线程,和所述功能模块调度时所需传入的参数分别对应一个第二目标数据类型;
所述在目标数据类型中分别查找所述应用程序的各个功能模块的调度信息,还包括:
在第一目标数据类型中查找候选功能模块的内容信息和执行时序信息的取值。
4.根据权利要求1所述的应用程序的功能模块调度方法,其特征在于,所述在目标数据类型中分别查找所述应用程序的各个功能模块的调度信息,包括:
分别获取所述应用程序的各个功能模块的标识信息;
分别查找各个功能模块的标识信息关联的目标数据类型;
在查找到的目标数据类型中查找调度信息。
5.根据权利要求1~4任一项所述的应用程序的功能模块调度方法,其特征在于,所述监测所述待执行队列中的各个功能模块的调度时机,包括:
调用时机函数,所述时机函数用于触发所述待执行队列中的各个功能模块的调度时机,所述时机函数是通过编译所述代码注解中的调度时机代码注解生成的;
监测所述时机函数的触发时机动作。
6.一种移动终端,其特征在于,包括处理器和存储器;
所述存储器用于存储执行权利要求1~5任一项所述方法的程序;
所述处理器被配置为执行所述存储器中存储的程序。
7.一种计算机可读存储介质,其特征在于,包括:存储有执行权利要求1~5任一项所述方法的程序。
8.一种应用程序的功能模块调度信息处理方法,其特征在于,包括:
从所述应用程序编译前的代码中读取用于声明多个功能模块的代码注解的类型信息;
根据每个类型信息分别对应的预定编译规则,分别对每个类型信息各自对应的所述代码注解进行编译,得到目标数据类型,所述目标数据类型中包括功能模块的调度信息;
所述目标数据类型包括第一目标数据类型和第二目标数据类型,则所述方法还包括:
分别获取所述应用程序的各个功能模块的标识信息;
分别查找各个功能模块的标识信息关联的第一目标数据类型,所述第一目标数据类型中包括功能模块的调度信息的索引;
根据查找到的调度信息的索引,在第二目标数据类型中查找候选功能模块的调度信息的取值,所述第二目标数据类型中包括功能模块的调度信息的取值,所述候选功能模块为查找到标识信息关联的第一目标数据类型的功能模块。
9.根据权利要求8所述的应用程序的功能模块调度信息处理方法,其特征在于,所述目标数据类型包括至少一个第二目标数据类型,每个第二目标数据类型对应一种类型的调度信息,且包括多个功能模块的同一类型的调度信息;
所述调度信息包括以下至少一种类型:
功能模块的调度时机,功能模块的调度条件,功能模块的调度线程,功能模块调度时所需传入的参数,功能模块的内容信息,功能模块的执行时序信息。
10.一种计算机设备,其特征在于,包括处理器和存储器;
所述存储器用于存储执行权利要求8或9所述方法的程序;
所述处理器被配置为执行所述存储器中存储的程序。
11.一种计算机可读存储介质,其特征在于,存储有执行权利要求8或9所述方法的程序。
CN201911212095.2A 2019-11-28 2019-11-28 应用程序的功能模块调度方法、调度信息处理方法及设备 Active CN110990137B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911212095.2A CN110990137B (zh) 2019-11-28 2019-11-28 应用程序的功能模块调度方法、调度信息处理方法及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911212095.2A CN110990137B (zh) 2019-11-28 2019-11-28 应用程序的功能模块调度方法、调度信息处理方法及设备

Publications (2)

Publication Number Publication Date
CN110990137A CN110990137A (zh) 2020-04-10
CN110990137B true CN110990137B (zh) 2022-08-26

Family

ID=70089107

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911212095.2A Active CN110990137B (zh) 2019-11-28 2019-11-28 应用程序的功能模块调度方法、调度信息处理方法及设备

Country Status (1)

Country Link
CN (1) CN110990137B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111752568A (zh) * 2020-06-23 2020-10-09 厦门美柚股份有限公司 应用程序的编译处理方法、装置、终端及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104239114A (zh) * 2013-11-12 2014-12-24 新华瑞德(北京)网络科技有限公司 应用程序的编译处理方法及装置
CN107305527A (zh) * 2016-04-22 2017-10-31 腾讯科技(深圳)有限公司 代码文件的处理方法和装置
CN107544886A (zh) * 2016-06-27 2018-01-05 上海中兴软件有限责任公司 一种模块流程化调度方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7721289B2 (en) * 2003-08-29 2010-05-18 Microsoft Corporation System and method for dynamic allocation of computers in response to requests
WO2007063957A1 (ja) * 2005-11-30 2007-06-07 Ipflex Inc. ステートメントを再構成する方法およびその機能を備えたコンピュータシステム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104239114A (zh) * 2013-11-12 2014-12-24 新华瑞德(北京)网络科技有限公司 应用程序的编译处理方法及装置
CN107305527A (zh) * 2016-04-22 2017-10-31 腾讯科技(深圳)有限公司 代码文件的处理方法和装置
CN107544886A (zh) * 2016-06-27 2018-01-05 上海中兴软件有限责任公司 一种模块流程化调度方法及装置

Also Published As

Publication number Publication date
CN110990137A (zh) 2020-04-10

Similar Documents

Publication Publication Date Title
CN111124906B (zh) 基于动态埋点的跟踪方法、编译方法、装置和电子设备
CN108804215B (zh) 一种任务处理方法、装置以及电子设备
US20170132026A1 (en) Apparatus and method for optimizing startup of embedded system
CN110321131B (zh) 业务组件打包方法、系统及服务器
CN111506314B (zh) 项目开发的方法、装置、服务器及介质
CN110597564A (zh) 一种安装包构建和业务组件加载方法、装置、终端设备
CN110781180A (zh) 一种数据筛选方法和数据筛选装置
CN104423994A (zh) 一种代码生成方法、编译器、调度方法、装置及调度系统
CN111988429A (zh) 算法调度方法以及系统
CN110990137B (zh) 应用程序的功能模块调度方法、调度信息处理方法及设备
CN111679852A (zh) 一种冲突依赖库的检测方法及装置
CN110032407B (zh) 提升cpu并行性能的方法及装置和电子设备
CN111538530A (zh) 页面跳转方法及系统、存储介质及电子设备
CN112732265A (zh) 一种数据处理方法和相关装置
CN116339697A (zh) 一种测试控制软件设计方法及装置
CN113448585B (zh) 一种线程池的编译方法、装置、电子设备和存储介质
CN110297639B (zh) 用于检测代码的方法和装置
CN114791884A (zh) 测试环境的构建方法、装置、存储介质及电子设备
CN110764771B (zh) 动态编译方法和装置、可读存储介质及电子设备
CN110688430B (zh) 一种获得数据旁路的方法、装置及电子设备
CN109284097B (zh) 实现复杂数据分析的方法、设备、系统及存储介质
CN112632113A (zh) 一种算子管理方法和算子管理系统
CN110187959B (zh) 一种动态链接库多线程调用方法及系统
CN116527577A (zh) 一种UI路由组件、基于UI路由组件的iOS模块间跳转方法和装置
CN116166689A (zh) 基于插槽的数据处理方法、装置、设备和可读存储介质

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
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Patentee after: Tiktok vision (Beijing) Co.,Ltd.

Address before: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Patentee before: BEIJING BYTEDANCE NETWORK TECHNOLOGY Co.,Ltd.

Address after: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Patentee after: Douyin Vision Co.,Ltd.

Address before: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Patentee before: Tiktok vision (Beijing) Co.,Ltd.