CN109582394B - 一种应用程序启动方法、装置和存储介质 - Google Patents

一种应用程序启动方法、装置和存储介质 Download PDF

Info

Publication number
CN109582394B
CN109582394B CN201811496681.XA CN201811496681A CN109582394B CN 109582394 B CN109582394 B CN 109582394B CN 201811496681 A CN201811496681 A CN 201811496681A CN 109582394 B CN109582394 B CN 109582394B
Authority
CN
China
Prior art keywords
function
starting
set object
delay time
current
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
CN201811496681.XA
Other languages
English (en)
Other versions
CN109582394A (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.)
Wuhan Douyu Network Technology Co Ltd
Original Assignee
Wuhan Douyu 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 Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN201811496681.XA priority Critical patent/CN109582394B/zh
Publication of CN109582394A publication Critical patent/CN109582394A/zh
Application granted granted Critical
Publication of CN109582394B publication Critical patent/CN109582394B/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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files

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

一种应用程序启动方法、装置和存储介质
技术领域
本发明实施例涉及计算机技术,尤其涉及一种应用程序启动方法、装置和存储介质。
背景技术
随着手机、平板电脑等终端的不断发展,终端上安装的应用程序(Application,APP)越来越多,用户对应用程序的需求也越来越多。为了满足用户的需求,应用程序的版本逐步升级,相应的启动项也逐渐增多,在同时启动这些启动项时,会大大降低应用程序的启动速度,影响用户体验。
目前,基于Android系统的应用程序在启动时,往往可以通过减少启动项的方式来提高应用程序的启动速度。然而,在实际应用中大部分的启动项是必须启动的,无法被去掉。可见,现有方式并不能有效地解决应用程序启动慢的问题。
发明内容
本发明实施例提供了一种应用程序启动方法、装置和存储介质,以提高应用程序的启动速度,从而提升用户体验。
第一方面,本发明实施例提供了一种应用程序启动方法,包括:
获取应用程序的多个启动对象以及每个所述启动对象对应的类名、启动函数名称和延迟时间;
以所述类名、所述启动函数名称和所述延迟时间为函数输入参数,调用所述启动对象中的延时注册函数,对每个所述启动对象存储的启动函数进行注册,获得注册后的第一类名集合对象、第一函数名称集合对象和第一延迟时间集合对象,其中,所述延时注册函数具有公有权限修饰符;
根据所述第一类名集合对象、所述第一函数名称集合对象和所述第一延迟时间集合对象,对所述启动对象进行调度和加载。
第二方面,本发明实施例还提供了一种应用程序启动装置,包括:
启动对象获取模块,用于获取应用程序的多个启动对象以及每个所述启动对象对应的类名、启动函数名称和延迟时间;
延时注册模块,用于以所述类名、所述启动函数名称和所述延迟时间为函数输入参数,调用所述启动对象中的延时注册函数,对每个所述启动对象存储的启动函数进行注册,获得注册后的第一类名集合对象、第一函数名称集合对象和第一延迟时间集合对象,其中,所述延时注册函数具有公有权限修饰符;
启动对象调度加载模块,用于根据所述第一类名集合对象、所述第一函数名称集合对象和所述第一延迟时间集合对象,对所述启动对象进行调度和加载。
第三方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任意实施例所提供的应用程序启动方法。
本发明实施例通过获取启动应用程序时需要加载的多个启动对象,并利用延时注册函数,对每个启动对象存储的启动函数进行统一的延迟注册,从而可以根据第一延迟时间集合对象中延迟时间的先后顺序,对每个启动对象进行自动调度和动态加载,以避免在启动应用程序时同时加载所有启动对象的情况,从而提高了应用程序的启动速度,以及提升了用户体验。
附图说明
图1是本发明实施例一提供的一种应用程序启动方法的流程图;
图2是本发明实施例二提供的一种应用程序启动方法的流程图;
图3是本发明实施例三提供的一种应用程序启动装置的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种应用程序启动方法的流程图,本实施例可适用于启动基于Android系统的应用程序的情况。该方法可以由应用程序启动装置来执行,该装置可以由软件和/或硬件的方式来实现,集成于安装有应用程序的智能终端中,比如智能手机、平板电脑或掌上游戏机等。如图1所示,该方法具体包括以下步骤:
S110、获取应用程序的多个启动对象以及每个启动对象对应的类名、启动函数名称和延迟时间。
其中,启动对象可以是在启动应用程序时所需要启动的任务或功能模块等。启动对象对应的类名是指该启动对象所属的类的名称。启动函数是指在启动应用程序过程中,需要进行延迟启动的初始化函数。本实施例中的启动对象可以是用于存储启动函数的对象。启动对象对应的启动函数名称是指启动对象中存储的启动函数的函数名称。启动对象对应的延迟时间是指在应用程序开始启动后,延迟加载该启动对象的时间。本实施例中的延迟时间可以根据用户需求和实际情况人为进行设置。
具体地,本实施例中获取的类名ClassName可以是类Class类型的信息,启动函数名称funcName可以是字符串String类型的信息,延迟时间delay可以是长整型Long类型的信息。示例性地,某个启动对象对应的类名ClassName为:InitModule,对应的启动函数名称funcName为:initAll,对应的延迟时间为:1000。本实施例中的延迟时间的单位可以为毫秒ms。
S120、以类名、启动函数名称和延迟时间为函数输入参数,调用启动对象中的延时注册函数,对每个启动对象存储的启动函数进行注册,获得注册后的第一类名集合对象、第一函数名称集合对象和第一延迟时间集合对象。
其中,延迟注册函数是预先定义的,用于对启动对象存储的启动函数进行延迟注册的函数,以便在启动应用程序时可以延迟加载启动对象。延时注册函数具有公有权限修饰符public,以使每个启动对象可以直接调用该延迟注册函数。第一类名集合对象是预先定义的,用于存储每个启动对象对应的类名的集合List类型的对象。第一函数名称集合对象是预先定义的,用于存储每个启动对象对应的启动函数的集合List类型的对象。第一延迟时间集合对象是预先定义的,用于存储启动对象对应的延迟时间的集合List类型的对象。在定义第一类名集合对象、第一函数名称集合对象和第一延迟时间集合对象时,需要进行初始化的操作。
示例性地,延迟注册函数setDelayHandler可以定义为:
Public void setDelayHandler(Class className,String funcName,longdelay)
第一类名集合对象listClass可以定义为:
List<Class>listClass=new ArrayList<Class>()
第一函数名称集合对象listFuncName可以定义为:
List<String>listFuncName=new ArrayList<String>()
第一延迟时间集合对象listDelay可以定义为:
List<Long>listDelay=new ArrayList<Long>()
具体地,将Class类型的类名className、String类型的启动函数名称funcName和long类型的延迟时间delay作为setDelayHandler的输入参数,通过调用某个启动对象中的setDelayHandler,可以将该启动对象对应的className添加至第一类名集合对象listClass中,将该启动对象对应的funcName添加至第一函数名称集合对象listFuncName中,以及将该启动对象对应的delay添加至第一延迟时间集合对象listDelay中,从而完成该启动对象的延迟注册操作。同理,通过调用每个启动对象中的延迟注册函数setDelayHandler,可以将每个启动对象对应的类名、启动函数名称和延迟时间分别添加至第一类名集合对象、第一函数名称集合对象和第一延迟时间集合对象中,从而可以获得每个启动对象注册后的第一类名集合对象、第一函数名称集合对象和第一延迟时间集合对象。
需要注意的是,本实施例中第一类名集合对象、第一函数名称集合对象和第一延迟时间集合对象中元素的排列顺序为元素的添加顺序,并且在第一类名集合对象、第一函数名称集合对象和第一延迟时间集合对象中,同一位置索引号对应的类名、启动函数名称和延迟时间均对应同一个启动对象。
S130、根据第一类名集合对象、第一函数名称集合对象和第一延迟时间集合对象,对启动对象进行调度和加载。
具体地,可以根据第一延迟时间集合对象存储的各个延迟时间的先后顺序,对启动对象进行自动调度,并根据第一类名集合对象、第一函数名称集合对象获得每个延迟时间对应的类名和启动函数名称,从而可以对启动对象进行动态加载,即执行启动对象中的启动函数。通过对每个启动对象设置一定的延迟时间,并按照设置的延迟时间对启动对象进行加载,从而可以避免在启动应用程序时同时加载所有启动对象的情况。本实施例通过逐次分批的加载启动对象,可以提高终端的运行效率,从而可以缩短应用程度的启动时间,提高启动速度,进而可以提升用户的观看体验。
示例性地,S130可以包括:对第一延迟时间集合对象中的各延迟时间进行升序排列,并将排列后的第一延迟时间集合对象确定为第二延迟时间集合对象;根据第一延迟时间集合对象对应的顺序调整信息,分别调整第一类名集合对象和第一函数名称集合对象中元素的排列顺序,确定第二类名集合对象和第二函数名称集合对象;根据第二延迟时间集合对象中延迟时间的排列顺序,依次进行定时操作,并根据第二类名集合对象和第二函数名称集合对象,确定并加载与当前延迟时间对应的当前启动对象。
具体地,本实施例中获得的第一延迟时间集合对象中的各延迟时间可能不是按照延迟时间的先后顺序进行排列的,从而需要将第一延迟时间集合对象中的各延迟时间进行升序排列。通过调节第一延迟时间集合对象中延迟时间的排列顺序,可以实现对启动对象的自动调度。根据第一延迟时间集合对象中延迟时间的顺序调整信息,对第一类名集合对象和第一函数名称集合对象中元素的排列顺序进行相应调整,将调整后的第一类名集合对象和第一函数名称集合对象分别确定为第二类名集合对象和第二函数名称集合对象。本实施例可以通过直接调用定时器Timer类的方式,根据第二延迟时间集合对象中的延迟时间来进行定时操作,并根据当前延迟时间对应的当前类名和当前启动函数名称,可以对当前启动对象进行加载,从而实现启动对象的动态加载,即启动函数的动态执行。
本实施例的技术方案,通过获取启动应用程序时需要加载的多个启动对象,并利用延时注册函数,对每个启动对象存储的启动函数进行统一的延迟注册,从而可以根据第一延迟时间集合对象中延迟时间的先后顺序,对每个启动对象进行自动调度和动态加载,以避免在启动应用程序时同时加载所有启动对象的情况,从而提高了应用程序的启动速度,以及提升了用户体验。
在上述技术方案的基础上,延时注册函数可以通过如下步骤实现对每个启动对象存储的启动函数进行注册的功能:
若检测第一类名集合对象中不包含启动对象对应的类名,则调用第一类名集合对象中的类名添加函数,将启动对象对应的类名添加至第一类名集合对象中;若检测启动对象对应的启动函数名称不为空,且第一函数名称集合对象中不包含启动函数名称,则调用第一函数名称集合对象中的函数名称添加函数,将启动对象对应的函数名称添加至第一函数名称集合对象中;若检测启动对象对应的延迟时间大于或等于预设时间,则调用第一延迟时间集合对象中的延迟时间添加函数,将启动对象对应的延迟时间添加至第一延迟时间集合对象中。
其中,类名添加函数是预先定义的,可以将启动对象对应的类名添加至第一类名集合对象中的函数。函数名称添加函数是预先定义的,可以将启动对象对应的启动函数名称添加至第一函数名称集合对象中的函数。延迟时间添加函数可以是预先定义的,可以将启动对象对应的延迟时间添加至第一延迟时间集合对象中的函数。预设时间可以根据调度模块的初始化时间以及其它基础功能模块初始化时间进行设置。示例性地,预设时间可以设置为100ms。
本实施例在对启动对象存储的启动函数进行注册时,可以对启动对象的类名、启动函数名称和延迟时间进行校验,从而可以仅对合法的启动对象进行注册,以保证注册后的每个启动对象均可以被正常加载。具体地,可以通过调用第一类名集合对象listClass中的类名查询函数listClass.contains(className),检测listClass中是否包含启动对象对应的类名className,若是,即类名查询函数返回true,则表明该类名对应的类已经注册过,此时无需再次进行注册,直接通过return返回即可;若否,即类名查询函数返回false,则通过调用第一类名集合对象listClass中的类名添加函数listClass.add(className),将启动对象对应的类名className添加至listClass中。
在将className添加至listClass后,可以通过调用名称检测函数TextUtils.isEmpty(funcName),检测启动对象对应的启动函数名称是否为空,若是,则删除listClass中已添加的该启动对象对应的类名,并通过return返回;若否,则可以通过调用第一函数名称集合对象listFuncName中的函数名称查询函数listFuncName.contains(funcName),检测listFuncName中是否包含启动对象对应的funcName,若包含,则直接通过return返回;若不包含,则可以通过调用listFuncName中的函数名称添加函数listFuncName.add(funcName),将该启动对象对应的启动函数名称funcName添加至listFuncName中。
在将funcName添加至listFuncName后,检测该启动对象对应的延迟时间delay是否大于预设时间,若否,则表明该启动对象需要在预设时间之前启动,即在初始化调度模块和其它基础模块结束之前加载该启动对象,由于在调度模块和其它基础模块初始化未结束时是无法加载启动对象的,从而该启动对象是不合法的,无法被加载,此时可以删除listClass中已添加的该启动对象对应的类名以及删除listFuncName中该启动对象对应的启动函数名称,并通过return返回;若延迟时间delay大于或等于预设时间,则可以通过调用第一延迟时间集合对象listDelay中的延迟时间添加函数listDelay.add(delay),将该启动对象对应的延迟时间delay添加至listDelay中。
在上述技术方案的基础上,在调用第一延迟时间集合对象中的延迟时间添加函数之前,还包括:根据预设时间,对启动对象对应的延迟时间进行取整转换,并将转换后的延迟时间作为延迟时间添加函数的输入参数,以将转换后的延迟时间至第一延迟时间集合对象中。
具体地,取整转换可以是将启动对象对应的延迟时间除以预设时间,再对相除结果进行取整,然后将取整结果再乘以预设时间,从而得到转换后的延迟时间。通过对每个启动对象对应的延迟时间进行取整转换,可以调整启动对象对应的延迟时间相差较小的情况,以避免不断地进行定时器的调用,减少定时器的调用次数,从而可以降低性能损耗。示例性地,若预设时间为100ms,启动对象A对应的延迟时间210ms,启动对象B对应的延迟时间211ms,则启动对象A和启动对象B之间启动的时间间隔仅为1ms,通过对启动对象A和启动对象B对应的延迟时间进行取整转换后得到的延迟时间均为200ms,以便同时加载启动对象A和启动对象B。相比于在加载启动对象A后,调用一次1ms的定时器再加载启动对象B的过程而言,同时加载启动对象A和启动对象B的启动速度更快,性能损耗更小。
实施例二
图2为本发明实施例二提供的一种应用程序启动方法的流程图,本实施例在上述实施例的基础上,对“根据第二延迟时间集合对象中延迟时间的排列顺序,依次进行定时操作,并根据第二类名集合对象和第二函数名称集合对象,确定并加载与当前延迟时间对应的当前启动对象”进行了优化。其中与上述实施例相同或相应的术语的解释在此不再赘述。
参见图2,本实施例提供的应用程序启动方法具体包括以下步骤:
S210、获取应用程序的多个启动对象以及每个启动对象对应的类名、启动函数名称和延迟时间。
S220、以类名、启动函数名称和延迟时间为函数输入参数,调用启动对象中的延时注册函数,对每个启动对象存储的启动函数进行注册,获得注册后的第一类名集合对象、第一函数名称集合对象和第一延迟时间集合对象。
S230、对第一延迟时间集合对象中的各延迟时间进行升序排列,并将排列后的第一延迟时间集合对象确定为第二延迟时间集合对象。
S240、根据第一延迟时间集合对象对应的顺序调整信息,分别调整第一类名集合对象和第一函数名称集合对象中元素的排列顺序,确定第二类名集合对象和第二函数名称集合对象。
S250、将第二延迟时间集合对象中的第一个延迟时间均作为当前目标时间和当前延时元素,并获得当前延时元素的后一延时元素。
其中,当前目标时间可以是指定时器的定时时间。当加载第一个延迟时间对应的启动对象时,可以直接将第一个延迟时间作为当前目标时间,以便在到达当前目标时间时,可以加载该启动对象。当前延时元素是指第二延迟时间集合对象中的一个延迟时间。在第一次循环周期内,将第二延迟时间集合对象中的第一个延迟时间作为当前延时元素。后一延时元素可以是根据第二延迟时间集合对象中延迟时间的排列顺序,与当前延时元素相邻的后一个延迟时间。若当前延时元素为第一延迟时间集合对象中第一个延迟时间,则后一延时元素为第一延迟时间集合对象中第二个延迟时间。
示例性地,可以定义三个整型int类型的元素变量:int delay1=0,int delay2=0,int delay3=0,利用元素变量delay1、delay2和delay3分别存储当前延时元素、后一延时元素和当前目标时间。还可以定义一个整型int类型的索引号变量:int index=0,利用索引号变量index来存储当前延时元素对应的当前元素索引号。在第一个循环周期内,对delay1、delay2、delay3和index进行赋值,即将第二延迟时间集合对象中的第一个延迟时间均赋值给delay1和delay3,将第二个延迟时间赋值给delay2,索引号变量index赋值为0。
S260、以当前延时元素对应的当前元素索引号和当前目标时间为函数输入参数,调用消息处理对象中的消息发送函数,于延迟当前目标时间后,获取包含当前元素索引号的延迟消息。
其中,消息处理对象可以是预先创建的一个全局的Handler对象。本实施例中的消息处理对象可以通过private Handler mHandler来创建,并通过调用mHandler=newHandler()来实例化消息处理对象mHandler。消息发送函数是预先定义,可以用于发送延迟消息的函数。消息发送函数具有两个输入参数,第一个输入参数为int类型的参数,用于唯一标识一条延迟消息,以便区分不同的延迟消息。本实施例将当前延时元素对应的当前元素索引号index直接作为第一个输入参数,即作为在mHandler的定时器消息中的唯一标识符,从而可以更加便捷地区分不同的延迟消息。第二个输入参数为当前目标时间delay3,用于表征延迟消息的发送时间,即定时器的定时时间。
本实施例需要开启多个定时器,以便逐次分批地加载启动对象。若直接通过调用Timer类来开启定时器,其性能损耗较高。针对于此,本实施例通过Android中的用于线程通行的Handler类来进行定时器的开启,从而可以大大降低性能损耗。具体地,可以以当前延时元素对应的当前元素索引号index和当前目标时间delay3作为输入参数,调用消息处理对象mHandler中的消息发送函数mHandler.sendMessageDelay(index,delay3),在延迟当前目标时间delay3后,可以获得一个消息内容为index的延迟消息。
S270、在获取延迟消息时,根据第二类名集合对象和第二函数名称集合对象,确定并加载与当前元素索引号对应的当前启动对象。
具体地,当获得延迟消息时,表明已经到达了定时器的定时时间,此时需要确定和加载相应的启动对象。根据获取的延迟消息可以得到延迟消息中的当前元素索引号index,从而根据该当前元素索引号可以确定当前启动对象。由于第二延迟时间集合对象、第二类名集合对象和第二函数名称集合对象在同一元素索引号下分别对应的延迟时间、类名和启动函数名称均属于同一启动对象的,从而可以根据第二延迟时间集合对象中的当前元素索引号确定在第二类名集合对象中当前延时元素对应的当前类名,以及在第二函数名称集合对象中当前延延时元素对应的当前启动函数名称,从而根据当前类名和当前启动函数名称可以确定并加载当前启动对象。
S280、检测当前延时元素是否为第二延迟时间集合对象中的最后一个延迟时间,若是,则进入步骤S290;若否,则进入步骤S291。
具体地,本实施例可以在获得延迟消息时,根据延迟消息中的当前元素索引号来检测当前延时元素是否为第二延迟时间集合对象中的最后一个延迟时间,以便确定所有的启动对象是否全部被加载完毕。若当前延时元素是最后一个延迟时间,则表明启动应用程序时所需要延迟加载的启动对象均加载完毕,此时可以执行步骤S290的操作。若当前延时元素不是最后一个延迟时间,则表明还需开启下一个定时器,以加载下一个启动对象,此时可以执行步骤S291的操作,以便及时开启下一个定时器。
示例性地,当前延时元素对应的当前元素索引号index的取值范围可以为:0≤index≤listDelay.size()-1,其中,listDelay.size()表示第二延迟时间集合对象listDelay中延时元素的总数。
S290、应用程序启动结束。
具体地,在当前延时元素为第二延迟时间集合对象中的最后一个延迟时间时,表明启动应用程序时所需要延迟加载的启动对象均按照相应的定时周期加载完毕,此时可以直接确定应用程序启动结束。
S291、将后一延时元素与当前延时元素之间的时间差更新为当前目标时间,以及将后一延时元素更新为当前延时元素,并返回执行步骤S260。
具体地,在当前延时元素不是第二延迟时间集合对象中的最后一个延迟时间时,需要确定下一个定时器的定时时间,以便加载下一个启动对象。本实施例中每个启动对象对应的延迟时间均是从应用程序的开始启动时刻算起的,从而下一个定时器的定时时间应为后一延时元素与当前延时元素之间的时间差。本实施例通过更新当前目标时间delay3为后一延时元素delay2与当前延时元素delay1之间的时间差,来设置下一个定时器的定时时间,即delay3=delay2-delay1。在当前目标时间更新后,将当前延时元素的后一延时元素更新为当前延时元素,即当前元素索引号index进行自加操作index++,以及更新delay1和delay2中的数据,以便可以将第二延迟时间集合对象中的延迟时间依次确定为当前延时元素,从而可以依次加载相应的启动对象。在将当前目标时间和当前延时元素更新后,通过重复执行步骤S260-S280进入下一个循环周期。
需要注意的是,若第二延迟时间集合对象中相邻的两个延迟时间相同,即定时器的定时时间为零,此时可以同时加载这两个延迟时间对应的启动对象。本实施例还可以将步骤S270-S291所提供的功能进行封装为消息处理对象mHandler中的消息接收函数handleMessage(),从而可以以延迟消息为输入参数,直接调用消息处理对象mHandler中的消息接收函数mHandler.handleMessage(),对延迟消息进行处理,使得操作更加便捷。
本实施例的技术方案,通过利用线程通行的Handler类来进行定时器的开启操作,并利用对第二延迟时间集合对象中的每个延迟时间进行循环遍历的方式,从而可以按照延迟时间的先后顺序,依次加载相应的启动对象,降低了性能损耗,提高了运行效率,从而进一步提高了应用程序的启动速度。
在上述技术方案的基础上,S240可以包括:对第一延迟时间集合对象中的各延迟时间进行升序排列时,记录每个延迟时间在排列之前的第一位置以及排列之后的第二位置;根据各延迟时间对应的第一位置和第二位置,对第一类名集合对象中的各类名进行排列,并将排列后的第一类名集合对象确定为第二类名集合对象;根据各延迟时间对应的第一位置和第二位置,对第一函数名称集合对象中的各函数名称进行排列,并将排列后的第一函数名称集合对象确定为第二函数名称集合对象。
其中,第一延迟时间集合对象对应的顺序调整信息可以是指第一延迟时间集合对象中的每个延迟时间在排列之前的第一位置indexOri以及排列之后的第二位置indexNow。
具体地,在对第一延迟时间集合对象进行升序排序时,可以将每个延迟时间对应的第一位置indexOri和第二位置indexNow记录在一个映射表中,从而可以根据这个映射表来调整第一类名集合对象和第一函数名称集合对象中的排列顺序。示例性地,若第一延迟时间集合对象中的某个延迟时间A在排列之前位于集合中的第一个位置,即indexOri=1,排列之后位于集合中的第三个位置,即indexNow=3,则基于此,可以将第一类名集合对象中位于第一个位置的类名调整至集合中的第三个位置,以及将第一函数名称集合对象中位于第一个位置的启动函数名称调整至集合中的第三个位置。同理,可以对第一类名集合对象和第一函数名称集合对象中的每个元素进行调整,获得第二类名集合对象和第二函数名称集合对象。本实施例中的第二延迟时间集合对象、第二类名集合对象和第二函数名称集合对象中的元素均是一一对应的,并且延迟时间是从小到大的顺序进行排列的。
在上述技术方案的基础上,S270可以包括:以当前元素索引号为函数输入参数,调用第二类名集合对象中的类名获取函数,确定当前元素索引号对应的当前类名;以当前元素索引号为函数输入参数,调用第二函数名称集合对象中的函数名称获取函数,确定当前元素索引号对应的当前启动函数名称;以当前启动函数名称为函数输入参数,调用当前类名对应的目标类对象中的对象加载函数,加载与当前启动函数名称对应的当前启动对象。
其中,类名获取函数可以是预先定义的,可以用于获取第二类名集合对象中元素索引号对应的类名的函数。函数名称获取函数可以是预先定义的,可以用于获取第二函数名称集合对象中元素索引号对应的启动函数名称的函数。目标类对象是指当前类名对应的类Class类型的对象。对象加载函数可以是指基于反射机制的,用于直接加载对象的函数。本实施例中的对象加载函数可以为invoke()函数。
具体地,以当前元素索引号index为函数输入参数,调用第二类名集合对象listClass中的类名获取函数调用listClass.get(index),可以获得index对应的当前类名,如利用mClass表征当前类名。调用第二函数名称集合对象listFuncName中的函数名称获取函数listFuncName.get(index),可以获得index对应的当前启动函数名称,如利用mFuncName表征当前启动函数名称。以当前启动函数名称mFuncName为函数输入参数,调用当前类名mClass对应的目标类对象mClass对象中的对象加载函数mClass.invoke(mFuncName),加载与当前启动函数名称mFuncName对应的当前启动对象,即执行当前启动函数名称mFuncName对应的初始化函数,其中mFuncName函数内部是具体的启动所需要自行的业务逻辑,从而可以完成整个启动对象的自行。
在上述技术方案的基础上,在S270之前,还可以包括:开启一个新线程,以在新线程中,执行根据第二类名集合对象和第二函数名称集合对象,确定并加载与当前元素索引号对应的当前启动对象的操作。
具体地,本实施例可以通过调用Thread mThread=new Thread(),开启一个新线程,以便在开启的新线程中加载当前启动对象,从而可以避免自动在主线程中进行加载操作,进而可以避免导致主线程卡顿或者引用异常的情况,提高了运行性能。
以下是本发明实施例提供的应用程序启动装置的实施例,该装置与上述各实施例的应用程序启动方法属于同一个发明构思,在应用程序启动装置的实施例中未详尽描述的细节内容,可以参考上述应用程序启动方法的实施例。
实施例三
图3为本发明实施例三提供的一种应用程序启动装置的结构示意图,本实施例可适用于启动基于Android系统的应用程序的情况,该装置具体包括:启动对象获取模块310、延时注册模块320和启动对象调度加载模块330。
其中,启动对象获取模块310,用于获取应用程序的多个启动对象以及每个启动对象对应的类名、启动函数名称和延迟时间;延时注册模块320,用于以类名、启动函数名称和延迟时间为函数输入参数,调用启动对象中的延时注册函数,对每个启动对象存储的启动函数进行注册,获得注册后的第一类名集合对象、第一函数名称集合对象和第一延迟时间集合对象,其中,延时注册函数具有公有权限修饰符;启动对象调度加载模块330,用于根据第一类名集合对象、第一函数名称集合对象和第一延迟时间集合对象,对启动对象进行调度和加载。
本实施例的技术方案,通过获取启动应用程序时需要加载的多个启动对象,并利用延时注册函数,对每个启动对象存储的启动函数进行统一的延迟注册,从而可以根据第一延迟时间集合对象中延迟时间的先后顺序,对每个启动对象进行自动调度和动态加载,以避免在启动应用程序时同时加载所有启动对象的情况,从而提高了应用程序的启动速度,以及提升了用户体验。
可选地,延时注册模块320包括延迟注册函数执行单元,延迟注册函数执行单元用于通过如下步骤实现对每个启动对象存储的启动函数进行注册的功能:
若检测第一类名集合对象中不包含启动对象对应的类名,则调用第一类名集合对象中的类名添加函数,将启动对象对应的类名添加至第一类名集合对象中;
若检测启动对象对应的启动函数名称不为空,且第一函数名称集合对象中不包含启动函数名称,则调用第一函数名称集合对象中的函数名称添加函数,将启动对象对应的函数名称添加至第一函数名称集合对象中;
若检测启动对象对应的延迟时间大于或等于预设时间,则调用第一延迟时间集合对象中的延迟时间添加函数,将启动对象对应的延迟时间添加至第一延迟时间集合对象中。
可选地,延迟注册函数执行单元在执行延迟注册函数的过程中,还用于:
在调用第一延迟时间集合对象中的延迟时间添加函数之前,根据预设时间,对启动对象对应的延迟时间进行取整转换,并将转换后的延迟时间作为延迟时间添加函数的输入参数,以将转换后的延迟时间至第一延迟时间集合对象中。
可选地,启动对象调度加载模块330,包括:
第二延迟时间集合对象确定单元,用于对第一延迟时间集合对象中的各延迟时间进行升序排列,并将排列后的第一延迟时间集合对象确定为第二延迟时间集合对象;
排列顺序调整单元,用于根据第一延迟时间集合对象对应的顺序调整信息,分别调整第一类名集合对象和第一函数名称集合对象中元素的排列顺序,确定第二类名集合对象和第二函数名称集合对象;
定时加载单元,用于根据第二延迟时间集合对象中延迟时间的排列顺序,依次进行定时操作,并根据第二类名集合对象和第二函数名称集合对象,确定并加载与当前延迟时间对应的当前启动对象。
可选地,排列顺序调整单元,具体用于:
在对第一延迟时间集合对象中的各延迟时间进行升序排列时,记录每个延迟时间在排列之前的第一位置以及排列之后的第二位置;
根据各延迟时间对应的第一位置和第二位置,对第一类名集合对象中的各类名进行排列,并将排列后的第一类名集合对象确定为第二类名集合对象;
根据各延迟时间对应的第一位置和第二位置,对第一函数名称集合对象中的各函数名称进行排列,并将排列后的第一函数名称集合对象确定为第二函数名称集合对象。
可选地,定时加载单元,包括:
当前延时元素确定子单元,用于将第二延迟时间集合对象中的第一个延迟时间均作为当前目标时间和当前延时元素,并获得当前延时元素的后一延时元素;
延迟消息发送子单元,用于以当前延时元素对应的当前元素索引号和当前目标时间为函数输入参数,调用消息处理对象中的消息发送函数,于延迟当前目标时间后,获取包含当前元素索引号的延迟消息;
当前启动对象加载子单元,用于在获取延迟消息时,根据第二类名集合对象和第二函数名称集合对象,确定并加载与当前元素索引号对应的当前启动对象;
当前延时元素检测子单元,用于检测当前延时元素是否为第二延迟时间集合对象中的最后一个延迟时间;
启动结束子单元,用于若是,则应用程序启动结束;
更新返回子单元,用于若否,则将后一延时元素与当前延时元素之间的时间差更新为当前目标时间,以及将后一延时元素更新为当前延时元素,并返回执行以当前延时元素对应的当前元素索引号和当前目标时间为函数输入参数,调用消息发送函数的操作。
可选地,当前启动对象加载子单元,具体用于:
以当前元素索引号为函数输入参数,调用第二类名集合对象中的类名获取函数,确定当前元素索引号对应的当前类名;
以当前元素索引号为函数输入参数,调用第二函数名称集合对象中的函数名称获取函数,确定当前元素索引号对应的当前启动函数名称;
以当前启动函数名称为函数输入参数,调用当前类名对应的目标类对象中的对象加载函数,加载与当前启动函数名称对应的当前启动对象。
可选地,该装置还包括:
新线程开启模块,用于在根据第二类名集合对象和第二函数名称集合对象,确定并加载与当前元素索引号对应的当前启动对象之前,开启一个新线程,以在新线程中,执行根据第二类名集合对象和第二函数名称集合对象,确定并加载与当前元素索引号对应的当前启动对象的操作。
本发明实施例所提供的应用程序启动装置可执行本发明任意实施例所提供的应用程序启动方法,具备执行应用程序启动方法相应的功能模块和有益效果。
值得注意的是,上述应用程序启动装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
实施例四
本实施例四提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任意实施例的一种应用程序启动方法,该方法包括:
获取应用程序的多个启动对象以及每个启动对象对应的类名、启动函数名称和延迟时间;
以类名、启动函数名称和延迟时间为函数输入参数,调用启动对象中的延时注册函数,对每个启动对象存储的启动函数进行注册,获得注册后的第一类名集合对象、第一函数名称集合对象和第一延迟时间集合对象,其中,延时注册函数具有公有权限修饰符;
根据第一类名集合对象、第一函数名称集合对象和第一延迟时间集合对象,对启动对象进行调度和加载。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于:电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
本领域普通技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个计算装置上,或者分布在多个计算装置所组成的网络上,可选地,他们可以用计算机装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件的结合。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (9)

1.一种应用程序启动方法,其特征在于,包括:
获取应用程序的多个启动对象以及每个所述启动对象对应的类名、启动函数名称和延迟时间;
以所述类名、所述启动函数名称和所述延迟时间为函数输入参数,调用所述启动对象中的延时注册函数,对每个所述启动对象存储的启动函数进行注册,获得注册后的第一类名集合对象、第一函数名称集合对象和第一延迟时间集合对象,其中,所述延时注册函数具有公有权限修饰符;
根据所述第一类名集合对象、所述第一函数名称集合对象和所述第一延迟时间集合对象,对所述启动对象进行调度和加载;
所述根据所述第一类名集合对象、所述第一函数名称集合对象和所述第一延迟时间集合对象,对所述启动对象进行调度和加载,包括:
对所述第一延迟时间集合对象中的各延迟时间进行升序排列,并将排列后的第一延迟时间集合对象确定为第二延迟时间集合对象;
根据所述第一延迟时间集合对象对应的顺序调整信息,分别调整所述第一类名集合对象和所述第一函数名称集合对象中元素的排列顺序,确定第二类名集合对象和第二函数名称集合对象;
根据所述第二延迟时间集合对象中延迟时间的排列顺序,依次进行定时操作,并根据所述第二类名集合对象和所述第二函数名称集合对象,确定并加载与当前延迟时间对应的当前启动对象。
2.根据权利要求1所述的方法,其特征在于,所述延时注册函数通过如下步骤实现对每个所述启动对象存储的启动函数进行注册的功能:
若检测第一类名集合对象中不包含所述启动对象对应的类名,则调用第一类名集合对象中的类名添加函数,将所述启动对象对应的类名添加至所述第一类名集合对象中;
若检测所述启动对象对应的启动函数名称不为空,且第一函数名称集合对象中不包含所述启动函数名称,则调用第一函数名称集合对象中的函数名称添加函数,将所述启动对象对应的函数名称添加至所述第一函数名称集合对象中;
若检测所述启动对象对应的延迟时间大于或等于预设时间,则调用第一延迟时间集合对象中的延迟时间添加函数,将所述启动对象对应的延迟时间添加至所述第一延迟时间集合对象中。
3.根据权利要求2所述的方法,其特征在于,在所述调用第一延迟时间集合对象中的延迟时间添加函数之前,还包括:
根据所述预设时间,对所述启动对象对应的延迟时间进行取整转换,并将转换后的延迟时间作为所述延迟时间添加函数的输入参数,以将转换后的延迟时间至所述第一延迟时间集合对象中。
4.根据权利要求1所述的方法,其特征在于,根据所述第一延迟时间集合对象对应的顺序调整信息,分别调整所述第一类名集合对象和所述第一函数名称集合对象中元素的排列顺序,确定第二类名集合对象和第二函数名称集合对象,包括:
在对所述第一延迟时间集合对象中的各延迟时间进行升序排列时,记录每个所述延迟时间在排列之前的第一位置以及排列之后的第二位置;
根据各所述延迟时间对应的所述第一位置和所述第二位置,对所述第一类名集合对象中的各类名进行排列,并将排列后的第一类名集合对象确定为第二类名集合对象;
根据各所述延迟时间对应的所述第一位置和所述第二位置,对所述第一函数名称集合对象中的各函数名称进行排列,并将排列后的第一函数名称集合对象确定为第二函数名称集合对象。
5.根据权利要求1所述的方法,其特征在于,根据所述第二延迟时间集合对象中延迟时间的排列顺序,依次进行定时操作,并根据所述第二类名集合对象和所述第二函数名称集合对象,确定并加载与当前延迟时间对应的当前启动对象,包括:
将所述第二延迟时间集合对象中的第一个延迟时间均作为当前目标时间和当前延时元素,并获得当前延时元素的后一延时元素;
以当前延时元素对应的当前元素索引号和当前目标时间为函数输入参数,调用消息处理对象中的消息发送函数,于延迟当前目标时间后,获取包含当前元素索引号的延迟消息;
在获取所述延迟消息时,根据所述第二类名集合对象和所述第二函数名称集合对象,确定并加载与当前元素索引号对应的当前启动对象;
检测所述当前延时元素是否为所述第二延迟时间集合对象中的最后一个延迟时间;
若是,则所述应用程序启动结束;
若否,则将后一延时元素与当前延时元素之间的时间差更新为当前目标时间,以及将后一延时元素更新为当前延时元素,并返回执行所述以当前延时元素对应的当前元素索引号和当前目标时间为函数输入参数,调用消息发送函数的操作。
6.根据权利要求5所述的方法,其特征在于,根据所述第二类名集合对象和所述第二函数名称集合对象,确定并加载与当前元素索引号对应的当前启动对象,包括:
以所述当前元素索引号为函数输入参数,调用所述第二类名集合对象中的类名获取函数,确定当前元素索引号对应的当前类名;
以所述当前元素索引号为函数输入参数,调用所述第二函数名称集合对象中的函数名称获取函数,确定当前元素索引号对应的当前启动函数名称;
以所述当前启动函数名称为函数输入参数,调用所述当前类名对应的目标类对象中的对象加载函数,加载与所述当前启动函数名称对应的当前启动对象。
7.根据权利要求5所述的方法,其特征在于,在根据所述第二类名集合对象和所述第二函数名称集合对象,确定并加载与当前元素索引号对应的当前启动对象之前,还包括:
开启一个新线程,以在所述新线程中,执行根据所述第二类名集合对象和所述第二函数名称集合对象,确定并加载与当前元素索引号对应的当前启动对象的操作。
8.一种应用程序启动装置,其特征在于,包括:
启动对象获取模块,用于获取应用程序的多个启动对象以及每个所述启动对象对应的类名、启动函数名称和延迟时间;
延时注册模块,用于以所述类名、所述启动函数名称和所述延迟时间为函数输入参数,调用所述启动对象中的延时注册函数,对每个所述启动对象存储的启动函数进行注册,获得注册后的第一类名集合对象、第一函数名称集合对象和第一延迟时间集合对象,其中,所述延时注册函数具有公有权限修饰符;
启动对象调度加载模块,用于根据所述第一类名集合对象、所述第一函数名称集合对象和所述第一延迟时间集合对象,对所述启动对象进行调度和加载;
所述启动对象调度加载模块,包括:
第二延迟时间集合对象确定单元,用于对第一延迟时间集合对象中的各延迟时间进行升序排列,并将排列后的第一延迟时间集合对象确定为第二延迟时间集合对象;
排列顺序调整单元,用于根据第一延迟时间集合对象对应的顺序调整信息,分别调整第一类名集合对象和第一函数名称集合对象中元素的排列顺序,确定第二类名集合对象和第二函数名称集合对象;
定时加载单元,用于根据第二延迟时间集合对象中延迟时间的排列顺序,依次进行定时操作,并根据第二类名集合对象和第二函数名称集合对象,确定并加载与当前延迟时间对应的当前启动对象。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一所述的应用程序启动方法。
CN201811496681.XA 2018-12-07 2018-12-07 一种应用程序启动方法、装置和存储介质 Active CN109582394B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811496681.XA CN109582394B (zh) 2018-12-07 2018-12-07 一种应用程序启动方法、装置和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811496681.XA CN109582394B (zh) 2018-12-07 2018-12-07 一种应用程序启动方法、装置和存储介质

Publications (2)

Publication Number Publication Date
CN109582394A CN109582394A (zh) 2019-04-05
CN109582394B true CN109582394B (zh) 2021-11-26

Family

ID=65927745

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811496681.XA Active CN109582394B (zh) 2018-12-07 2018-12-07 一种应用程序启动方法、装置和存储介质

Country Status (1)

Country Link
CN (1) CN109582394B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110045997B (zh) * 2019-04-15 2022-07-05 武汉斗鱼鱼乐网络科技有限公司 基础功能模块的对象初始化方法、装置、设备和存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102298532A (zh) * 2011-09-15 2011-12-28 奇智软件(北京)有限公司 一种基于启动项的管理方法及装置
CN102707973A (zh) * 2012-05-04 2012-10-03 惠州Tcl移动通信有限公司 基于Android系统的应用程序启动的方法和系统
CN103067429A (zh) * 2011-10-21 2013-04-24 联想(北京)有限公司 一种快速启动的方法及终端
CN104021017A (zh) * 2014-06-17 2014-09-03 北京奇虎科技有限公司 启动项的处理方法和装置
CN105630543A (zh) * 2015-12-21 2016-06-01 北京奇虎科技有限公司 一种应用冷启动加速的方法及装置
CN107436786A (zh) * 2017-07-28 2017-12-05 深圳Tcl新技术有限公司 应用启动优化方法、装置及计算机可读存储介质
CN107908452A (zh) * 2017-11-15 2018-04-13 福建中金在线信息科技有限公司 多页面启动方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6677021B2 (ja) * 2016-03-03 2020-04-08 日本電気株式会社 情報処理装置、情報処理方法、プログラム

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102298532A (zh) * 2011-09-15 2011-12-28 奇智软件(北京)有限公司 一种基于启动项的管理方法及装置
CN103067429A (zh) * 2011-10-21 2013-04-24 联想(北京)有限公司 一种快速启动的方法及终端
CN102707973A (zh) * 2012-05-04 2012-10-03 惠州Tcl移动通信有限公司 基于Android系统的应用程序启动的方法和系统
CN104021017A (zh) * 2014-06-17 2014-09-03 北京奇虎科技有限公司 启动项的处理方法和装置
CN105630543A (zh) * 2015-12-21 2016-06-01 北京奇虎科技有限公司 一种应用冷启动加速的方法及装置
CN107436786A (zh) * 2017-07-28 2017-12-05 深圳Tcl新技术有限公司 应用启动优化方法、装置及计算机可读存储介质
CN107908452A (zh) * 2017-11-15 2018-04-13 福建中金在线信息科技有限公司 多页面启动方法及装置

Also Published As

Publication number Publication date
CN109582394A (zh) 2019-04-05

Similar Documents

Publication Publication Date Title
CA2768752C (en) Terminal device of non-android platform for executing android applications, and computer readable recording medium for storing program of executing android applications on non-android platform
CN109062617A (zh) 一种支持多类型设备的平台的应用方法、移动终端
CN113243005A (zh) 按需网络代码执行系统中的基于性能的硬件仿真
US11435985B2 (en) Electronic device and operation method thereof
US11016769B1 (en) Method and apparatus for processing information
US20240111549A1 (en) Method and apparatus for constructing android running environment
CN109783159B (zh) 基于配置信息的应用启动方法和装置
CN110968331B (zh) 应用程序运行的方法和装置
CN112698888A (zh) 应用程序的组件化、组件调用和组件初始化方法及其装置
CN109669735B (zh) 基于延时注册的应用启动方法、装置和存储介质
CN111258726A (zh) 任务调度方法和装置
US20240345829A1 (en) Mobile service upgrade method and apparatus, and terminal
CN109582394B (zh) 一种应用程序启动方法、装置和存储介质
CN109753321B (zh) 基于协议注册的应用启动方法、装置、终端和存储介质
CN109739579B (zh) 基于反馈协议的应用启动方法、装置和存储介质
CN113419832A (zh) 一种延迟任务的处理方法、装置及终端
EP3819763B1 (en) Electronic device and operating method thereof
CN110120963B (zh) 一种数据处理方法、装置、设备和机器可读介质
CN113127775A (zh) 一种页面加载方法、装置、设备和存储介质
CN114911538B (zh) 一种运行系统的启动方法及计算设备
US11360702B2 (en) Controller event queues
CN107632864B (zh) 一种建立特定排序的UEFI Boot Order的方法
CN113760631B (zh) 页面加载时长确定方法、装置、设备和存储介质
CN103677846A (zh) 一种SQLite数据库开发工具包及开发方法
CN114756362A (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