CN111124545A - 应用程序启动方法、装置、电子设备及存储介质 - Google Patents

应用程序启动方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN111124545A
CN111124545A CN201911361468.2A CN201911361468A CN111124545A CN 111124545 A CN111124545 A CN 111124545A CN 201911361468 A CN201911361468 A CN 201911361468A CN 111124545 A CN111124545 A CN 111124545A
Authority
CN
China
Prior art keywords
dynamic registration
class
application program
needing
preset
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.)
Pending
Application number
CN201911361468.2A
Other languages
English (en)
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.)
Beijing QIYI Century Science and Technology Co Ltd
Original Assignee
Beijing QIYI Century Science and 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 QIYI Century Science and Technology Co Ltd filed Critical Beijing QIYI Century Science and Technology Co Ltd
Priority to CN201911361468.2A priority Critical patent/CN111124545A/zh
Publication of CN111124545A publication Critical patent/CN111124545A/zh
Pending legal-status Critical Current

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
    • 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/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

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

应用程序启动方法、装置、电子设备及存储介质
技术领域
本发明涉及应用程序技术领域,特别是涉及应用程序启动方法装置、电子设备及存储介质。
背景技术
在用户使用应用程序(APP)之前,需要通过应用程序的启动过程来对应用程序进行初始化。在应用程序的启动过程中,需要将应用程序中的一些类动态注册到全局字典中。在应用程序的启动过程中,包括对应用程序中的所有需要动态注册的类进行动态注册的阶段。由于该阶段涉及对大量的需要动态注册的类的动态注册,因此,应用程序的启动过程的耗时主要来源于该阶段。如何快速地完成需要动态注册的类的动态注册,减少应用程度的启动过程的耗时成为一个亟待解决的问题。
发明内容
本发明实施例的目的在于提供一种应用程序启动方法,以实现较快地完成应用程序的启动。具体技术方案如下:
在本发明实施的第一方面,首先提供了一种应用程序启动方法,应用于应用程序,应用程序启动方法包括:
在接收到对应用程序的启动指令,获取预设动态注册关联信息,所述预设动态注册关联信息包括:所述应用程序中的每一个需要动态注册的类的名称,所述预设动态注册关联信息预先基于每一个需要动态注册的类的特征信息而生成;
在所述应用程序的启动过程中,执行预设动态注册操作,所述预设动态注册操作包括:基于所述预设动态注册关联信息,确定每一个需要动态注册的类,以及分别调用每一个需要动态注册的类中的用于动态注册的函数。
在一些实施例中,在接收到对应用程序的启动指令之前,所述方法还包括:
在所述应用程序的编译过程中,基于每一个需要动态注册的类的特征信息,从所述应用程序中的所有类中查找出每一个需要动态注册的类;
生成包括所有需要动态注册的类的名称的类名称文件;
将所述类名称文件作为所述预设动态注册关联信息;
将所述预设动态注册关联信息打包到所述应用程序中。
在一些实施例中,所述基于所述预设动态注册关联信息,确定每一个需要动态注册的类,以及分别调用每一个需要动态注册的类中的用于动态注册的函数包括:
从所述类名称文件读取出每一个需要动态注册的类的名称,以确定每一个需要动态注册的类;
生成包括所述每一个需要动态注册的类的列表文件;
对列表文件中的需要动态注册的类进行遍历,其中,在遍历过程中每一次访问到一个需要动态注册的类,调用访问到的需要动态注册的类中的用于动态注册的函数,以对需要动态注册的类进行动态注册。
在一些实施例中,所述方法还包括:
利用第一线程执行所述预设动态注册操作;
利用第二线程执行其他操作,所述其他操作为需要在所述应用程序的启动过程中执行的所有操作中的除了所述预设动态注册操作之外的操作。
在一些实施例中,所述需要动态注册的类的特征信息为需要动态注册的类中的用于动态注册的函数的名称。
动态注册的函数在本发明实施的第二方面,还提供了一种应用程序启动装置,应用于应用程序,应用程序启动装置包括:
获取单元,被配置为在接收到对应用程序的启动指令,获取预设动态注册关联信息,所述预设动态注册关联信息包括:所述应用程序中的每一个需要动态注册的类的名称,所述预设动态注册关联信息预先基于每一个需要动态注册的类的特征信息而生成;
启动单元,被配置为在所述应用程序的启动过程中,执行预设动态注册操作,所述预设动态注册操作包括:基于所述预设动态注册关联信息,确定每一个需要动态注册的类,以及分别调用每一个需要动态注册的类中的用于动态注册的函数。
在一些实施例中,应用程序启动装置还包括:
收集单元包括:在接收到对应用程序的启动指令之前,在所述应用程序的编译过程中,基于每一个需要动态注册的类的特征信息,从所述应用程序中的所有类中查找出每一个需要动态注册的类;
生成包括所有需要动态注册的类的名称的类名称文件;
将所述类名称文件作为所述预设动态注册关联信息;
将所述预设动态注册关联信息打包到所述应用程序中。
在一些实施例中,启动单元包括:
遍历执行模块,被配置为:
从所述类名称文件读取出每一个需要动态注册的类的名称,以确定每一个需要动态注册的类;
生成包括所述每一个需要动态注册的类的列表文件;
对列表文件中的需要动态注册的类进行遍历,其中,在遍历过程中每一次访问到一个需要动态注册的类,调用访问到的需要动态注册的类中的用于动态注册的函数,以对需要动态注册的类进行动态注册。
在一些实施例中,应用程序启动装置还包括:
并行执行单元,被配置为利用第一线程执行所述预设动态注册操作;利用第二线程执行其他操作,所述其他操作为需要在所述应用程序的启动过程中执行的所有操作中的除了所述预设动态注册操作之外的操作。
在一些实施例中,所述需要动态注册的类的特征信息为需要动态注册的类中的用于动态注册的函数的名称。
动态注册的函数在本发明实施的又一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述任一所述的应用程序启动方法。
在本发明实施的又一方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的应用程序启动方法。
本发明实施例提供的应用程序启动方法,通过在应用程序的启动过程中,利用预先生成的预设动态注册关联信息,确定每一个需要动态注册的类,而无需在应用程序的启动过程中查找出每一个需要动态注册的类,从而,快速地确定每一个需要动态注册的类,然后,分别调用每一个需要动态注册的类中的用于动态注册的函数,对每一个需要动态注册的类进行动态注册。可以较快地完成对应用程序中的所有需要动态注册的类的动态注册,减少应用程序的启动过程的耗时,以较快的速度完成应用程序的启动。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本发明实施例提供的应用程序启动方法的一个实施例的流程图;
图2为本发明实施例提供的应用程序启动方法的一个示例性流程图;
图3为本发明实施例提供的应用程序启动装置的一个结构示意图;
图4为适用于实现本发明实施例提供的应用程序启动方法的电子设备的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
步骤101,在接收到对应用程序的启动指令,获取预设动态注册关联信息。
在本发明提供的实施例中,当用户需要使用应用程序时,用户可以通过诸如点击应用程序的图标的方式来启动应用,用于执行本发明提供的应用启动方法的设备可以接收到对应用程序的启动指令,获取预设动态注册关联信息。
在本发明提供的实施例中,预设动态注册关联信息包括:应用程序中的每一个需要动态注册的类的名称,预设动态注册关联信息预先基于每一个需要动态注册的类的特征信息而生成。
在本发明提供的实施例中,在应用程序的启动过程之前,可以基于预先设置的需要动态注册的类的特征信息,从应用程序中的所有类中查找出需要动态注册的类,以及生成预设动态注册关联信息。
在本发明提供的实施例中,预先设置的需要动态注册的类的特征信息用于区分需要动态注册的类和不需要动态注册的类。
在本发明提供的实施例中,在从应用程序中的所有类中查找出需要动态注册的类的过程中,当确定一个类是否为需要动态注册的类时,可以判断该类是否具有预先设置的需要动态注册的类的特征信息,若该类具有预先设置的需要动态注册的类的特征信息,,则该类为一个需要动态注册的类。
例如,需要动态注册的类的特征信息为需要动态注册的类中的一个特征名称。当从所有类中查找出需要动态注册的类时,对于每一个类,可以根据该类是否包括该特征名称,确定该类是否为需要动态注册的类。若一个类具有该特征名称,,则该类为一个需要动态注册的类。
在一些实施例中,需要动态注册的类的特征信息为需要动态注册的类中的用于动态注册的函数的名称。
在本发明提供的实施例中,当从应用程序中的所有类中查找出需要动态注册的类时,对于应用程序中的每一个类,可以根据类是否包括名称为预先设置的需要动态注册的类中的用于动态注册的函数的名称的、用于动态注册的函数,确定该类是否为需要动态注册的类。
例如,需要动态注册的类的特征信息为需要动态注册的类中的用于动态注册的函数的名称“cardLoad”。当从所有类中查找出需要动态注册的类时,对于一个类,若该类包括名称为“cardLoad”的用于动态注册的函数,则可以确定该类为需要动态注册的类。
在一些实施例中,在接收到对应用程序的启动指令之前,还包括:在应用程序的编译过程中,基于每一个需要动态注册的类的特征信息,从应用程序中的所有类中查找出每一个需要动态注册的类;生成包括所有需要动态注册的类的名称的类名称文件;将类名称文件作为预设动态注册关联信息;将预设动态注册关联信息打包到应用程序中。
在本发明提供的实施例中,在接收到对应用程序的启动指令之前,当从应用程序中的所有类中查找出需要动态注册的类时,可以遍历应用程序的代码,查找出包括预先设置的需要动态注册的类的特征信息的类,将查找出的包括预先设置的需要动态注册的类的特征信息的类确定为需要动态注册的类。
在本发明提供的实施例中,当从应用程序中的所有类中查找出需要动态注册的类时,可以在应用程序的代码的编译期间即在应用程序的编译过程中,获取在应用程序的编译过程中生成的中间文件。中间文件记录已经被编译的所有函数的属性信息。遍历中间文件中的已经被编译的所有函数的属性信息,查找出包括预先设置的需要动态注册的类的特征信息的类,将查找出的类确定为需要动态注册的类。
在本发明提供的实施例中,在确定所有需要动态注册的类之后,可以生成包括所有需要动态注册的类的名称的类名称文件。可以将生成的包括所有需要动态注册的类的名称的类名称文件作为预设动态注册关联信息,同时,将生成包括所有需要动态注册的类的名称的类名称文件打包到应用程序中。从而,在将应用程序提供给用户时,可以在用户的终端上安装应用程序,同时,将包括所有需要动态注册的类的名称的类名称文件存储在用户的终端上。在应用程序的启动过程中,可以由负责执行在应用程序的启动过程中需要执行的操作的线程,读取包括所有需要动态注册的类的名称的类名称文件,以定所有需要动态注册的类。
步骤102,在应用程序的启动过程中,执行预设动态注册操作。
在应用程序的启动过程中,进行一系列操作来对应用进行初始化。
在本发明提供的实施例中,预设动态注册操作包括:基于预设动态注册关联信息,确定每一个需要动态注册的类,以及分别调用每一个需要动态注册的类中的用于动态注册的函数。
在本发明提供的实施例中,对于每一个需要动态注册的类,需要动态注册的类包括用于动态注册的函数。在本发明提供的实施例中,在执行预设动态注册操作的过程中,首先根据包括应用程序中的每一个需要动态注册的类的名称的预设动态注册关联信息,确定每一个需要动态注册类。然后,可以分别调用每一个需要动态注册的类中的用于动态注册的函数,从而,完成对每一个需要动态注册的类的动态注册。
在本发明提供的实施例中,在应用程序的启动过程中,通过预先生成的预设动态注册关联信息,确定每一个需要动态注册的类,而无需在应用程序的启动过程中查找出每一个需要动态注册的类,从而,快速地确定每一个需要动态注册的类,然后,分别调用每一个需要动态注册的类中的用于动态注册的函数,对每一个需要动态注册的类进行动态注册。可以较快地完成对应用程序中的所有需要动态注册的类的动态注册,减少应用程序的启动过程的耗时,以较快的速度完成应用程序的启动。
在一些实施例中,还包括:利用第一线程执行预设动态注册操作;利用第二线程执行其他操作,其他操作为需要在应用程序的启动过程中执行的所有操作中的除了预设动态注册操作之外的操作。
在本发明提供的实施例中,在应用程序的启动过程中执行的一系列操作中的除了预设动态注册操作之外的每一个操作均为其他操作。
以iOS应用程序为例,在iOS应用程序的启动过程中,包括load dylib阶段、rebase阶段、bind阶段、Objc setup阶段。上述阶段的顺序为load dylib->rebase->bind->Objcsetup->initializer。在initializer阶段,对需要动态注册的类进行动态注册。
对于iOS应用程序而言,本发明中的预设动态注册操作在initializer阶段执行。除了预设动态注册操作之外,在initializer阶段或在其他的阶段执行的任意一个操作均为其他操作。
在本发明提供的实施例中,在应用程序的启动过程中,可以利用第一线程执行耗时长的预设动态注册操作,利用第二线程执行需要在应用程序的启动过程中执行的除了预设动态注册操作之外的所有其他操作。
以iOS应用程序为例,在iOS应用程序的启动过程中,包括load dylib阶段、rebase阶段、bind阶段、Objc setup阶段。iOS系统提供的原有的用于完成iOS应用程序的启动过程的线程可以用于执行其他操作,iOS系统提供的原有的用于完成iOS应用程序的启动过程的线程可以作为第二线程。由于用于将大量的需要注册的类进行动态注册的动态注册操作的耗时长,可以利用第一线程去执行预设动态注册操作来对每一个需要动态注册的类进行动态注册。从而,进一步减少对应用程序中的所有需要动态注册的类进行动态注册的耗时,进一步减少应用程序的启动过程的耗时。
在一些实施例中,基于预设动态注册关联信息,确定每一个需要动态注册的类,以及分别调用每一个需要动态注册的类中的用于动态注册的函数包括:从类名称文件读取出每一个需要动态注册的类的名称,以确定每一个需要动态注册的类;生成包括每一个需要动态注册的类的列表文件;对列表文件中的需要动态注册的类进行遍历,其中,在遍历过程中每一次访问到一个需要动态注册的类,调用访问到的需要动态注册的类中的用于动态注册的函数,以对需要动态注册的类进行动态注册。
在本发明提供的实施例中,在执行预设动态注册操作时,可以从类名称文件读取出每一个需要动态注册的类的名称,从而,确定每一个需要动态注册的类。然后,可以获取每一个需要动态注册的类。
例如,应用程序为iOS应用程序,可以通过字符串反射机制,根据每一个需要动态注册的类的名称,获取每一个需要动态注册的类。需要动态注册的类包括类中的所有变量、方法等对象。从而,在获取到每一个需要动态注册的类之后,可以分别调用需要动态注册的类中的用于动态注册的函数,完成每一个需要动态注册的类的动态注册。
在本发明提供的实施例中,在分别调用每一个需要动态注册的类中的用于动态注册的函数之前,可以生成包括每一个需要动态注册的类的列表文件。然后,对列表文件中的需要动态注册的类进行遍历。在遍历过程中每一次访问到一个需要动态注册的类,调用访问到的类中的用于动态注册的协议方法。从而,对每一个需要动态注册的类进行动态注册。
请参考图2,其示出了本发明实施例提供的应用程序启动方法的一个示例性流程图。
以应用程序为iOS应用程序为例,使用Xcode build配置与编译iOS应用程序相关的项。可以在Xcode build增加RunScript选项,在RunScript选项中加入类名收集脚本。类名收集脚本可以基于预先设置的需要动态注册的类的特征信息,从iOS应用程序中的所有类中查找出需要动态注册的类。
例如,需要动态注册的类中用于动态注册的函数的名称为“cardLoad”,类名收集脚本可以从iOS应用程序中的所有类中查找包括名称为“cardLoad”的用于动态注册的函数的类。
在应用程序的编译期间,获取在应用程序的编译过程中生成的中间文件。中间文件记录已经被编译的所有函数的名称。可以遍历中间文件中的已经被编译的所有函数的名称,查找出需要动态注册的类,将查找出的所有需要动态注册的类加入到文件B中。
在应用程序的打包期间,将文件B打包到iOS应用程序的安装文件中。
将iOS应用程序的安装文件提供给用户。
在iOS应用程序在用户的终端上安装完成之后,当用户需要使用iOS应用程序时,可以接收到iOS应用程序的启动指令。在iOS应用程序的启动过程中,在需要的时机读取文件B,即在应用程序的启动过程中,在需要执行预设动态注册操作时,读取文件B,确定所有需要动态注册的类。通过字符串反射机制,获取所有需要动态注册的类,生成一个列表文件C。
遍历列表文件C,调用每一个需要动态注册的类中的用于动态注册的函数,将每一个需要动态注册的类动态注册到全局字典中,从而,完成所有需要动态注册的类的动态注册。
请参考图3,其示出了本发明实施例提供的应用程序启动装置的结构示意图。应用程序装置中的各个单元或子单元执行的操作的具体实现方式可以上述参考方法实施例中描述的相应的操作的具体实现方式。
如图3所示,本发明实施例的提供的应用程序启动装置包括:获取单元301,启动单元302。
获取单元,被配置为在接收到对应用程序的启动指令,获取预设动态注册关联信息,所述预设动态注册关联信息包括:所述应用程序中的每一个需要动态注册的类的名称,所述预设动态注册关联信息预先基于每一个需要动态注册的类的特征信息而生成;
启动单元,被配置为在所述应用程序的启动过程中,执行预设动态注册操作,所述预设动态注册操作包括:基于所述预设动态注册关联信息,确定每一个需要动态注册的类,以及分别调用每一个需要动态注册的类中的用于动态注册的函数。
在一些实施例中,应用程序启动装置还包括:
收集单元包括:在接收到对应用程序的启动指令之前,在所述应用程序的编译过程中,基于每一个需要动态注册的类的特征信息,从所述应用程序中的所有类中查找出每一个需要动态注册的类;
生成包括所有需要动态注册的类的名称的类名称文件;
将所述类名称文件作为所述预设动态注册关联信息;
将所述预设动态注册关联信息打包到所述应用程序中。
在一些实施例中,启动单元包括:
遍历执行模块,被配置为:
从所述类名称文件读取出每一个需要动态注册的类的名称,以确定每一个需要动态注册的类;
生成包括所述每一个需要动态注册的类的列表文件;
对列表文件中的需要动态注册的类进行遍历,其中,在遍历过程中每一次访问到一个需要动态注册的类,调用访问到的需要动态注册的类中的用于动态注册的函数,以对需要动态注册的类进行动态注册。
在一些实施例中,应用程序启动装置还包括:
并行执行单元,被配置为利用第一线程执行所述预设动态注册操作;利用第二线程执行其他操作,所述其他操作为需要在所述应用程序的启动过程中执行的所有操作中的除了所述预设动态注册操作之外的操作。
在一些实施例中,所述需要动态注册的类的特征信息为需要动态注册的类中的用于动态注册的函数的名称。
本发明实施例还提供了一种电子设备,如图4所示,包括处理器401、通信接口402、存储器403和通信总线404,其中,处理器401,通信接口402,存储器403通过通信总线404完成相互间的通信,
存储器403,用于存放计算机程序;
处理器401,用于执行存储器403上所存放的程序时,实现如下步骤:
在接收到对应用程序的启动指令,获取预设动态注册关联信息,所述预设动态注册关联信息包括:所述应用程序中的每一个需要动态注册的类的名称,所述预设动态注册关联信息预先基于每一个需要动态注册的类的特征信息而生成;
在所述应用程序的启动过程中,执行预设动态注册操作,所述预设动态注册操作包括:基于所述预设动态注册关联信息,确定每一个需要动态注册的类,以及分别调用每一个需要动态注册的类中的用于动态注册的函数。
上述终端提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的应用程序启动方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的应用程序启动方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (10)

1.一种应用程序启动方法,其特征在于,应用于应用程序,所述方法包括:
在接收到对应用程序的启动指令,获取预设动态注册关联信息,所述预设动态注册关联信息包括:所述应用程序中的每一个需要动态注册的类的名称,所述预设动态注册关联信息预先基于每一个需要动态注册的类的特征信息而生成;
在所述应用程序的启动过程中,执行预设动态注册操作,所述预设动态注册操作包括:基于所述预设动态注册关联信息,确定每一个需要动态注册的类,以及分别调用每一个需要动态注册的类中的用于动态注册的函数。
2.根据权利要求1所述的方法,其特征在于,在接收到对应用程序的启动指令之前,所述方法还包括:
在所述应用程序的编译过程中,基于每一个需要动态注册的类的特征信息,从所述应用程序中的所有类中查找出每一个需要动态注册的类;
生成包括所有需要动态注册的类的名称的类名称文件;
将所述类名称文件作为所述预设动态注册关联信息;
将所述预设动态注册关联信息打包到所述应用程序中。
3.根据权利要求2所述的方法,其特征在于,所述基于所述预设动态注册关联信息,确定每一个需要动态注册的类,以及分别调用每一个需要动态注册的类中的用于动态注册的函数包括:
从所述类名称文件读取出每一个需要动态注册的类的名称,以确定每一个需要动态注册的类;
生成包括所述每一个需要动态注册的类的列表文件;
对列表文件中的需要动态注册的类进行遍历,其中,在遍历过程中每一次访问到一个需要动态注册的类,调用访问到的需要动态注册的类中的用于动态注册的函数,以对需要动态注册的类进行动态注册。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
利用第一线程执行所述预设动态注册操作;
利用第二线程执行其他操作,所述其他操作为需要在所述应用程序的启动过程中执行的所有操作中的除了所述预设动态注册操作之外的操作。
5.根据权利要求1-4之一所述的方法,其特征在于,所述需要动态注册的类的特征信息为需要动态注册的类中的用于动态注册的函数的名称。
6.一种应用程序启动装置,应用于应用程序,其特征在于,所述装置包括:
获取单元,被配置为在接收到对应用程序的启动指令,获取预设动态注册关联信息,所述预设动态注册关联信息包括:所述应用程序中的每一个需要动态注册的类的名称,所述预设动态注册关联信息预先基于每一个需要动态注册的类的特征信息而生成;
启动单元,被配置为在所述应用程序的启动过程中,执行预设动态注册操作,所述预设动态注册操作包括:基于所述预设动态注册关联信息,确定每一个需要动态注册的类,以及分别调用每一个需要动态注册的类中的用于动态注册的函数。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
预设动态注册关联信息生成单元,被配置为:在接收到对应用程序的启动指令之前,在所述应用程序的编译过程中,基于每一个需要动态注册的类的特征信息,从所述应用程序中的所有类中查找出每一个需要动态注册的类;生成包括所有需要动态注册的类的名称的类名称文件;将所述类名称文件作为所述预设动态注册关联信息;将所述预设动态注册关联信息打包到所述应用程序中。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
并行执行单元,被配置为:利用第一线程执行所述预设动态注册操作;利用第二线程执行其他操作,所述其他操作为需要在所述应用程序的启动过程中执行的所有操作中的除了所述预设动态注册操作之外的操作。
9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-5任一所述的方法步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-5中任一所述的方法。
CN201911361468.2A 2019-12-25 2019-12-25 应用程序启动方法、装置、电子设备及存储介质 Pending CN111124545A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911361468.2A CN111124545A (zh) 2019-12-25 2019-12-25 应用程序启动方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911361468.2A CN111124545A (zh) 2019-12-25 2019-12-25 应用程序启动方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN111124545A true CN111124545A (zh) 2020-05-08

Family

ID=70502629

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911361468.2A Pending CN111124545A (zh) 2019-12-25 2019-12-25 应用程序启动方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN111124545A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111949328A (zh) * 2020-08-06 2020-11-17 中国工商银行股份有限公司 一种启动加速方法、装置、计算机设备及存储介质
CN112306584A (zh) * 2020-10-19 2021-02-02 北京字节跳动网络技术有限公司 一种应用程序运行控制方法、装置、介质和设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101763257A (zh) * 2009-09-22 2010-06-30 浙江数芳科技有限公司 java类预处理通信系统及java类预处理方法
CN105094922A (zh) * 2015-08-17 2015-11-25 北京奇虎科技有限公司 应用程序免安装运行控制方法及其装置
CN106355049A (zh) * 2016-08-19 2017-01-25 北京奇虎科技有限公司 一种加固安卓安装包的动态链接库so文件的方法和装置
CN109960597A (zh) * 2019-03-28 2019-07-02 武汉斗鱼鱼乐网络科技有限公司 一种应用层接口的动态注册方法及相关装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101763257A (zh) * 2009-09-22 2010-06-30 浙江数芳科技有限公司 java类预处理通信系统及java类预处理方法
CN105094922A (zh) * 2015-08-17 2015-11-25 北京奇虎科技有限公司 应用程序免安装运行控制方法及其装置
CN106355049A (zh) * 2016-08-19 2017-01-25 北京奇虎科技有限公司 一种加固安卓安装包的动态链接库so文件的方法和装置
CN109960597A (zh) * 2019-03-28 2019-07-02 武汉斗鱼鱼乐网络科技有限公司 一种应用层接口的动态注册方法及相关装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
RAZOR: "爱奇艺移动应用优化之路", pages 5 - 6 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111949328A (zh) * 2020-08-06 2020-11-17 中国工商银行股份有限公司 一种启动加速方法、装置、计算机设备及存储介质
CN111949328B (zh) * 2020-08-06 2023-10-03 中国工商银行股份有限公司 一种启动加速方法、装置、计算机设备及存储介质
CN112306584A (zh) * 2020-10-19 2021-02-02 北京字节跳动网络技术有限公司 一种应用程序运行控制方法、装置、介质和设备

Similar Documents

Publication Publication Date Title
CN108156022B (zh) 一种服务调用方法、装置及电子设备
CN108628751B (zh) 一种无用依赖项检测方法及装置
CN111782339B (zh) 一种容器创建方法、装置、电子设备及存储介质
CN111124480B (zh) 应用程序包的生成方法、装置、电子设备及存储介质
CN111124545A (zh) 应用程序启动方法、装置、电子设备及存储介质
CN105354490A (zh) 一种处理被劫持浏览器的方法及设备
CN110442353B (zh) 一种安装包管理的方法、装置及电子设备
CN105243134B (zh) 一种处理被劫持浏览器的方法及设备
CN109542775B (zh) 一种测试脚本的生成和执行方法及装置
CN111240987A (zh) 移植程序检测方法、装置、电子设备及计算机可读存储介质
CN111443920B (zh) 一种框架迁移方法及装置
CN109460255B (zh) 内存地址的查询方法及装置
CN112965697A (zh) 一种代码文件的生成方法、装置及电子设备
CN112541182B (zh) 内核vfs层系统修复方法、装置、设备及存储介质
CN112114870A (zh) 一种打包代码的方法、装置、终端设备和存储介质
CN111881220A (zh) 列表存储下的数据操作方法、装置、电子设备和存储介质
CN111309410B (zh) 一种程序对象确定方法及装置
CN110597763B (zh) 一种函数索引表的生成方法及装置
CN113741956B (zh) 移植版本管理功能的方法及装置、版本管理方法及装置
CN114448848B (zh) 一种交换机的测试方法、装置、电子设备及存储介质
CN105205393A (zh) 一种处理被劫持浏览器的方法及设备
CN114896139A (zh) 应用工程的数据处理方法、装置、电子设备及存储介质
CN112559370A (zh) 一种基于前端的React项目单元测试方法及相关设备
CN108446113B (zh) 类名称获取方法、装置及电子设备
CN112286809A (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