一种动态库的加载方法、装置、终端设备及存储介质与流程

文档序号:11285895阅读:212来源:国知局
一种动态库的加载方法、装置、终端设备及存储介质与流程

本发明属于计算机技术领域,尤其涉及一种动态库的加载方法、装置、终端设备及存储介质。



背景技术:

随着电子科技的不断发展,手机、平板等终端设备在人们的生活中越来越普及。现有的很多终端设备采用的是android系统,android系统中大部分应用程序都是混合型应用程序,这些应用程序不仅要使用java语言,经常还要用到c语言,c语言的代码编译后最终以动态库的形态进行储存,有些动态库储存在系统中,有些动态库储存在应用程序中。相较于java语言,c语言具有运算消耗低,运行速度快的优势,因此得到广泛应用。当应用程序运行后,若需使用某个动态库,需调用并加载该动态库,而动态库的加载需要时间,因此降低了应用程序的运行速度。



技术实现要素:

本发明实施例所要解决的技术问题在于提供一种动态库的加载方法、装置、终端设备及存储介质,旨在解决现有技术中应用程序运行速度较慢的问题。

本发明实施例第一方面提供了一种动态库的加载方法,所述方法包括:

当预置的加载条件被触发时,对预加载列表中的动态库进行预加载;

响应于触发的运行指令,运行所述运行指令指向的应用程序,所述应用程序在运行后调取预加载的动态库中的函数。

本发明实施例第二方面提供了一种动态库的加载装置,所述装置包括:

预加载模块,用于当预置的加载条件被触发时,对预加载列表中的动态库进行预加载;

处理模块,用于响应于触发的运行指令,运行所述运行指令指向的应用程序,所述应用程序在运行后调取预加载的动态库中的函数。

本发明实施例第三方面提供了一种终端设备,所述终端设备包括:

存储器,用于存储可在处理器上运行的计算机程序;以及

处理器,所述处理器耦合到所述存储器,所述处理器被配置为用于通过运行所述计算机程序执行如上述本发明第一方面提供的动态库的加载方法中的各项操作。

本发明实施例第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现上述本发明第一方面提供的动态库的加载方法中的各个步骤。

从上述本发明实施例可知,本发明通过当预置的加载条件被触发时,对预加载列表中的动态库进行预加载,响应于触发的运行指令,运行该运行指令指向的应用程序,应用程序在运行后调取预加载的动态库中的函数,相较于现有技术,本发明通过预先加载预加载列表中的动态库,当应用程序需要使用该预加载列表中的某个动态库的函数时,无需再等待该动态库的加载,可直接调用预加载后的动态库中的函数,提高了应用程序的运行速度,提高了产品的粘性,提高了用户体验。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

附图1示出了一种终端设备的结构框图;

附图2是本发明一实施例提供的动态库的加载方法的实现流程示意图;

附图3是本发明另一实施例提供的动态库的加载方法的实现流程示意图;

附图4是本发明另一实施例提供的动态库的加载装置的结构示意图;

附图5是本发明另一实施例提供的动态库的加载装置的结构示意图。

具体实施方式

为使得本发明实施例的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

附图1示出了一种终端设备的结构框图。该终端设备可以但不限于包括:配置有多个射频电路的智能手机、平板电脑、智能穿戴设备等移动终端,或配置有多个射频电路的台式电脑、智能电视机等非移动终端。如附图1所示,终端设备10包括存储器102、存储控制器104,一个或多个(图中仅示出一个)处理单元106、外设接口108、射频单元110、按键单元112、音频单元114以及显示单元116。这些组件通过一条或多条通讯总线/信号线122相互通讯。

可以理解,附图1所示的结构仅为示意,其并不对终端设备10的结构造成限定。例如,终端设备10还可包括比附图1所示更多或者更少的组件,或者具有与附图1所示不同的配置。附图1所示的各组件可以采用硬件、软件或其组合实现。

存储器102可用于存储软件程序以及模块,如本发明实施例中的动态库的加载方法及装置对应的程序指令/模块,处理单元106通过运行存储在存储器102内的软件程序以及模块,从而执行各种功能应用程序以及数据处理,即实现上述的动态库的加载方法。

其中,处理单元106被配置为:

当预置的加载条件被触发时,对预加载列表中的动态库进行预加载;

响应于触发的运行指令,运行所述运行指令指向的应用程序,所述应用程序在运行后调取预加载的动态库中的函数。

可选的,处理单元106还被配置为:

当系统启动时,对所述预加载列表中的动态库进行预加载;或,

当接收到用户触发的快速运行指令时,对所述预加载列表中的动态库进行预加载。

可选的,处理单元106还被配置为:

将系统动态库的标识信息写入所述预加载列表。

可选的,处理单元106还被配置为:

获取第一统计时长内,运行次数达到预置运行次数的应用程序的动态库的标识信息,并写入所述预加载列表。

可选的,处理单元106还被配置为:

获取第二统计时长内,所述应用程序的动态库中加载次数达到预置加载次数的动态库的标识信息,并写入所述预加载列表。

可选的,处理单元106还被配置为:

当所述系统启动时,在art虚拟机进程zygote中,打开所述预加载列表中的动态库。

存储器102可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器102可进一步包括相对于处理单元106远程设置的存储器,这些远程存储器可以通过网络连接至终端设备10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。处理单元106以及其他可能的组件对存储器102的访问可在存储控制器104的控制下进行。

外设接口108将各种输入/输入装置耦合至处理单元106以及存储器102。处理单元106运行存储器102内的各种软件、指令以执行终端设备10的各种功能以及进行数据处理。

在一些实例中,外设接口108,处理单元106以及存储控制器104可以在单个芯片中实现。在其他一些实例中,他们可以分别由独立的芯片实现。

射频单元110用于接收以及发送电磁波,实现电磁波与电信号的相互转换,从而与通讯网络或者其他设备进行通讯。射频单元110可包括各种现有的用于执行这些功能的电路元件,例如,天线、射频收发器、数字信号处理器、加密/解密芯片、用户身份模块(sim)卡、存储器等等。射频单元110可与各种网络如互联网、企业内部网、预置类型的无线网络进行通讯或者通过预置类型的无线网络与其他设备进行通讯。上述的预置类型的无线网络可包括蜂窝式电话网、无线局域网或者城域网。上述的预置类型的无线网络可以使用各种通信标准、协议及技术,包括但并不限于全球移动通信系统(globalsystemformobilecommunication,gsm),增强型移动通信技术(enhanceddatagsmenvironment,edge),宽带码分多址技术(widebandcodedivisionmultipleaccess,w-cdma),码分多址技术(codedivisionaccess,cdma),时分多址技术(timedivisionmultipleaccess,tdma),蓝牙,无线保真技术(wireless-fidelity,wifi)(如美国电气和电子工程师协会标准ieee802.11a、ieee802.11b、ieee802.11g和/或ieee802.11n),网络电话(voiceoverinternetprotocol,voip),全球微波互联接入(worldwideinteroperabilityformicrowaveaccess,wi-max),其他用于邮件、即时通讯及短消息的协议,以及任何其他合适的通讯协议,甚至可包括那些当前仍未被开发出来的协议。

按键单元112提供用户向终端设备10进行输入的接口,用户可以通过按下不同的按键以使终端设备10执行不同的功能。

音频单元114向用户提供音频接口,其可包括一个或多个麦克风、一个或者多个扬声器以及音频电路。音频电路从外设接口108处接收声音数据,将声音数据转换为电信息,将电信息传输至扬声器。扬声器将电信息转换为人耳能听到的声波。音频电路还从麦克风处接收电信息,将电信号转换为声音数据,并将声音数据传输至外设接口108中以进行进一步的处理。音频数据可以从存储器102处或者通过射频单元110获取。此外,音频数据也可以存储至存储器102中或者通过射频单元110进行发送。在一些实例中,音频单元114还可包括一个耳机播孔,用于向耳机或者其他设备提供音频接口。

显示单元116在终端设备10与用户之间提供一个输出界面。具体地,显示单元116向用户显示视频输出,这些视频输出的内容可包括文字、图形、视频、及其任意组合。一些输出结果是对应于一些用户界面对象。进一步地,还在终端设备10与用户之间提供一个输入界面,用于接收用户的输入,例如用户的点击、滑动等手势操作,以便用户界面对象对这些用户的输入做出响应。检测用户输入的技术可以是基于电阻式、电容式或者其他任意可能的触控检测技术。

请参阅附图2,附图2为本发明一实施例提供的动态库的加载方法的实现流程示意图,该方法可以应用程序于终端设备中。如附图2所示,该方法主要包括以下步骤:

s201、当预置的加载条件被触发时,对预加载列表中的动态库进行预加载;

动态库(dynamiclinklibrary,dll)又称动态链接库,是一个可由应用程序使用的代码和数据的库。

动态库包括系统动态库和应用程序的动态库,系统动态库是存储在系统中的公共动态库,其加载后可供系统中的各应用程序使用;应用程序的动态库是应用程序自身的动态库,其加载后仅供该应用程序使用。

预加载列表是系统预设的一个列表,用于记载终端写入的动态库的标识信息。当预置的加载条件被触发时,终端会对预加载列表中的动态库进行预加载。

s202、响应于触发的运行指令,运行该运行指令指向的应用程序,应用程序在运行后调取预加载的动态库中的函数。

运行指令可以是用户触发的,也可以是系统触发的。

响应于触发的运行指令,终端运行该运行指令指向的应用程序,应用程序在运行后调取预加载的动态库中的函数以供自身使用。

本发明实施例提供的动态库的加载方法,通过当预置的加载条件被触发时,对预加载列表中的动态库进行预加载,响应于触发的运行指令,运行该运行指令指向的应用程序,应用程序在运行后调取预加载的动态库中的函数,相较于现有技术,本发明通过预先加载预加载列表中的动态库,当应用程序需要使用该预加载列表中的某个动态库的函数时,无需再等待该动态库的加载,可直接调用预加载后的动态库中的函数,提高了应用程序的运行速度,提高了产品的粘性,提高了用户体验。

请参阅附图3,附图3为本发明另一实施例提供的动态库的加载方法的实现流程示意图,该方法可以应用程序于终端设备中。如附图3所示,该方法主要包括以下步骤:

s301、将系统动态库的标识信息写入预加载列表;

动态库又称动态链接库,是一个可由应用程序使用的代码和数据的库。

动态库包括系统动态库和应用程序的动态库,系统动态库是存储在系统中的公共动态库,其加载后可供系统中的各应用程序使用;应用程序的动态库是应用程序自身的动态库,其加载后仅供该应用程序使用。

预加载列表是系统预设的一个列表,用于记载终端写入的动态库的标识信息。当预置的加载条件被触发时,终端会对预加载列表中的动态库进行预加载。

预加载系统动态库,当应用程序需要调用系统动态库的函数时,无需再耗费时间加载该系统动态库,可直接调用加载后的系统动态库中的函数,提高了应用程序的运行速度。

进一步地,还可以获取第一统计时长内,运行次数达到预置运行次数的应用程序的动态库的标识信息,并写入预加载列表。

例如,设第一统计时长为1小时,预置运行次数为5次,即监测应用程序的运行次数,当某应用程序在1小时内的运行次数达到5次时,将该应用程序确定为高频应用程序,并将高频应用程序中全部动态库的标识信息写入预加载列表。

预加载高频应用程序的动态库,当该高频应用程序需要调用其本身的动态库的函数时,无需再耗费时间进行加载,可直接调用加载后的动态库中的函数,提高了应用程序的运行速度。

进一步地,还可以获取第二统计时长内,应用程序的动态库中加载次数达到预置加载次数的动态库的标识信息,并写入预加载列表。

例如,设第二统计时长为30分钟,预置加载次数为3次,监测应用程序的动态库的加载次数,当某应用程序的动态库在30分钟内的加载次数达到3次时,将该动态库确定为高频动态库,并将高频动态库的标识信息写入预加载列表。

预加载高频动态库,当该高频动态库对应的应用程序需要调用该高频动态库的函数时,无需再耗费时间进行加载,可直接调用加载后的高频动态库中的函数,提高了高频动态库对应的应用程序的运行速度。

s302、当系统启动时,对预加载列表中的动态库进行预加载;

具体的,当系统启动时,在第一个art虚拟机进程zygote中,打开预加载列表中的动态库,以进行动态库的预加载。

虚拟机进程zygote,是虚拟机实例的孵化器。它在系统启动的时候就会产生,它会完成虚拟机的初始化,以及动态库的加载、预制类库和初始化的操作。如果系统需要一个新的虚拟机实例,它会迅速复制自身,以最快的数据提供给系统。对于一些只读的系统动态库,所有虚拟机实例都和zygote共享一块内存区域。

进一步地,还可以当接收到用户触发的快速运行指令时,对预加载列表中的动态库进行预加载。

终端根据用户的操作触发的快速运行指令,对预加载列表中的动态库进行预加载。

s303、响应于触发的运行指令,运行该运行指令指向的应用程序,应用程序在运行后调取预加载的动态库中的函数。

运行指令可以是用户触发的,也可以是系统触发的。

响应于触发的运行指令,终端运行该运行指令指向的应用程序,应用程序在运行后调取预加载的动态库中的函数以供自身使用。

本发明实施例提供的动态库的加载方法,通过当预置的加载条件被触发时,对预加载列表中的动态库进行预加载,响应于触发的运行指令,运行该运行指令指向的应用程序,应用程序在运行后调取预加载的动态库中的函数,相较于现有技术,本发明通过预先加载预加载列表中的动态库,当应用程序需要使用该预加载列表中的某个动态库的函数时,无需再等待该动态库的加载,可直接调用预加载后的动态库中的函数,提高了应用程序的运行速度,提高了产品的粘性,提高了用户体验。

请参阅附图4,附图4是本发明另一实施例提供的动态库的加载装置的结构示意图,为了便于说明,仅示出了与本发明实施例相关的部分。附图4示例的动态库的加载装置可以是前述第一实施例提供的动态库的加载方法的执行主体,其可以是终端设备或者终端设备中的一个功能模块。附图4示例的动态库的加载装置,主要包括:预加载模块401及处理模块402。各功能模块详细说明如下:

预加载模块401,用于当预置的加载条件被触发时,对预加载列表中的动态库进行预加载。

动态库又称动态链接库,是一个可由应用程序使用的代码和数据的库。

动态库包括系统动态库和应用程序的动态库,系统动态库是存储在系统中的公共动态库,其加载后可供系统中的各应用程序使用;应用程序的动态库是应用程序自身的动态库,其加载后仅供该应用程序使用。

预加载列表是系统预设的一个列表,用于记载终端写入的动态库的标识信息。当预置的加载条件被触发时,预加载模块401会对预加载列表中的动态库进行预加载。

处理模块402,用于响应于触发的运行指令,运行该运行指令指向的应用程序,应用程序在运行后调取预加载的动态库中的函数。

运行指令可以是用户触发的,也可以是系统触发的。

响应于触发的运行指令,处理模块402运行该运行指令指向的应用程序,应用程序在运行后调取预加载的动态库中的函数以供自身使用。

本发明实施例提供的动态库的加载装置,通过当预置的加载条件被触发时,对预加载列表中的动态库进行预加载,响应于触发的运行指令,运行该运行指令指向的应用程序,应用程序在运行后调取预加载的动态库中的函数,相较于现有技术,本发明通过预先加载预加载列表中的动态库,当应用程序需要使用该预加载列表中的某个动态库的函数时,无需再等待该动态库的加载,可直接调用预加载后的动态库中的函数,提高了应用程序的运行速度,提高了产品的粘性,提高了用户体验。

请参阅附图5,附图5是本发明另一实施例提供的动态库的加载装置的结构示意图,为了便于说明,仅示出了与本发明实施例相关的部分。附图5示例的动态库的加载装置可以是前述第二实施例提供的动态库的加载方法的执行主体,其可以是终端设备或者终端设备中的一个功能模块。附图5示例的动态库的加载装置,主要包括:写入模块501、第一获取模块502、第二获取模块503、预加载模块504及处理模块505。各功能模块详细说明如下:

写入模块501,用于将系统动态库的标识信息写入预加载列表。

动态库又称动态链接库,是一个可由应用程序使用的代码和数据的库。

动态库包括系统动态库和应用程序的动态库,系统动态库是存储在系统中的公共动态库,其加载后可供系统中的各应用程序使用;应用程序的动态库是应用程序自身的动态库,其加载后仅供该应用程序使用。

预加载列表是系统预设的一个列表,用于记载写入模块501写入的动态库的标识信息。当预置的加载条件被触发时,预加载模块504会对预加载列表中的动态库进行预加载。

预加载系统动态库,当应用程序需要调用系统动态库的函数时,无需再耗费时间加载该系统动态库,可直接调用加载后的系统动态库中的函数,提高了应用程序的运行速度。

第一获取模块502,用于获取第一统计时长内,运行次数达到预置运行次数的应用程序的动态库的标识信息,并写入预加载列表。

例如,设第一统计时长为1小时,预置运行次数为5次,即监测应用程序的运行次数,当某应用程序在1小时内的运行次数达到5次时,将该应用程序确定为高频应用程序,并将高频应用程序中全部动态库的标识信息写入预加载列表。

预加载高频应用程序的动态库,当该高频应用程序需要调用其本身的动态库的函数时,无需再耗费时间进行加载,可直接调用加载后的动态库中的函数,提高了应用程序的运行速度。

第二获取模块503,用于获取第二统计时长内,应用程序的动态库中加载次数达到预置加载次数的动态库的标识信息,并写入预加载列表。

例如,设第二统计时长为30分钟,预置加载次数为3次,监测应用程序的动态库的加载次数,当某应用程序的动态库在30分钟内的加载次数达到3次时,将该动态库确定为高频动态库,并将高频动态库的标识信息写入预加载列表。

预加载高频动态库,当该高频动态库对应的应用程序需要调用该高频动态库的函数时,无需再耗费时间进行加载,可直接调用加载后的高频动态库中的函数,提高了高频动态库对应的应用程序的运行速度。

预加载模块504,用于当系统启动时,对预加载列表中的动态库进行预加载。

具体的,预加载模块504,用于当系统启动时,预加载模块504在第一个art虚拟机进程zygote中,打开预加载列表中的动态库,以进行动态库的预加载。

虚拟机进程zygote,是虚拟机实例的孵化器。它在系统启动的时候就会产生,它会完成虚拟机的初始化,以及动态库的加载、预制类库和初始化的操作。如果系统需要一个新的虚拟机实例,它会迅速复制自身,以最快的数据提供给系统。对于一些只读的系统动态库,所有虚拟机实例都和zygote共享一块内存区域。

进一步地,预加载模块504,还用于当接收到用户触发的快速运行指令时,对预加载列表中的动态库进行预加载。

预加载模块504根据用户的操作触发的快速运行指令,对预加载列表中的动态库进行预加载。

处理模块505,用于响应于触发的运行指令,运行该运行指令指向的应用程序,应用程序在运行后调取预加载的动态库中的函数。

运行指令可以是用户触发的,也可以是系统触发的。

响应于触发的运行指令,处理模块505运行该运行指令指向的应用程序,应用程序在运行后调取预加载的动态库中的函数以供自身使用。

本发明实施例提供的动态库的加载装置,通过当预置的加载条件被触发时,对预加载列表中的动态库进行预加载,响应于触发的运行指令,运行该运行指令指向的应用程序,应用程序在运行后调取预加载的动态库中的函数,相较于现有技术,本发明通过预先加载预加载列表中的动态库,当应用程序需要使用该预加载列表中的某个动态库的函数时,无需再等待该动态库的加载,可直接调用预加载后的动态库中的函数,提高了应用程序的运行速度,提高了产品的粘性,提高了用户体验。

需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本发明所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。

以上为对本发明所提供的动态库的加载方法、装置、终端设备及存储介质的描述,对于本领域的技术人员,依据本发明实施例的思想,在具体实施方式及应用程序范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1