一种数据处理方法、数据处理装置及移动终端与流程

文档序号:15931037发布日期:2018-11-14 01:38阅读:166来源:国知局

本申请属于操作系统技术领域,尤其涉及一种数据处理方法、数据处理装置、移动终端及计算机可读存储介质。

背景技术

安卓(android)系统作为一个开源系统,开发者众多,应用层次不齐,这对安卓系统稳定性也构成很大威胁,尽管各个厂商会做各种兼容性测试,但是在安卓系统的运行过程中,仍然可能出现卡顿的问题;特别是前台运行的应用程序的卡顿,影响到了用户使用安卓系统的流畅度。



技术实现要素:

有鉴于此,本申请提供了一种数据处理方法、数据处理装置、移动终端及计算机可读存储介质,可缓解安卓系统出现的前台运行的应用程序卡顿的现象,提升安卓系统的使用流程度。

本申请的第一方面提供了一种数据处理方法,上述数据处理方法包括:

当接收到编译请求时,拦截上述编译请求;

检测上述编译请求是否来源于前台应用程序,其中,上述前台应用程序为当前在前台运行的应用程序;

若上述编译请求非来源于前台应用程序,则检测当前的系统参数与预设的系统参数是否相匹配;

若当前的系统参数与上述预设的系统参数不匹配,则挂起上述编译请求。

本申请的第二方面提供了一种数据处理装置,上述数据处理装置包括:

拦截单元,用于当接收到编译请求时,拦截上述编译请求;

第一检测单元,用于检测上述编译请求是否来源于前台应用程序,其中,上述前台应用程序为当前在前台运行的应用程序;

第二检测单元,用于若上述编译请求非来源于前台应用程序,则检测当前的系统参数与预设的系统参数是否相匹配;

管理单元,用于若当前的系统参数与上述预设的系统参数不匹配,则挂起上述编译请求。

本申请的第三方面提供了一种移动终端,上述移动终端包括存储器、处理器以及存储在上述存储器中并可在上述处理器上运行的计算机程序,上述处理器执行上述计算机程序时实现如上第一方面的方法的步骤。

本申请的第四方面提供了一种计算机可读存储介质,上述计算机可读存储介质存储有计算机程序,上述计算机程序被处理器执行时实现如上第一方面的方法的步骤。

本申请的第五方面提供了一种计算机程序产品,上述计算机程序产品包括计算机程序,上述计算机程序被一个或多个处理器执行时实现如上述第一方面的方法的步骤。

由上可见,通过本申请方案,首先在接收到编译请求时,拦截上述编译请求,然后检测上述编译请求是否来源于前台应用程序,其中,上述前台应用程序为当前在前台运行的应用程序,若上述编译请求非来源于前台应用程序,则检测当前的系统参数与预设的系统参数是否相匹配,若当前的系统参数与上述预设的系统参数不匹配,则挂起上述编译请求。本申请方案使得在当前系统负载较高时能够暂停非前台应用程序发送的编译请求的进程,保障前台应用程序的正常运行,以此缓解安卓系统的卡顿问题。

附图说明

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

图1是本申请实施例提供的数据处理方法的一种实现流程示意图;

图2是本申请实施例提供的数据处理方法的另一种实现流程示意图;

图3是本申请实施例提供的数据处理装置的结构框图;

图4是本申请实施例提供的移动终端的示意图。

具体实施方式

以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。

为了说明本申请上述的技术方案,下面通过具体实施例来进行说明。

实施例一

下面对本申请实施例提供的一种数据处理方法进行描述,请参阅图1,本申请实施例中的数据处理方法包括:

在步骤101中,当接收到编译请求时,拦截上述编译请求;

在本申请实施例中,当移动终端接收到编译请求时,拦截上述编译请求,其中,上述移动终端具体为使用安卓系统的移动终端。在安卓系统的运行过程中,如果在安卓运行时间(androidruntime,art)虚拟机中接收到了dex2oat请求,则拦截上述dex2oat请求。上述art所采用的机制为在应用程序第一次安装时,就将字节码预先编译为机器码,也即是在第一安装时就进行预编译(ahead-of-time,aot),使得移动终端上所安装的应用真正成为本地应用,通过上述art虚拟机可使得后续该安装的应用的启动及执行的速度都会有一定的提升。

安卓的虚拟机的发展经历了从初期的dalvik,到中期的dalvik,以及后期的art。但是市面上的安装包(androidpackage,apk)文件早已已经全球流行。为了能够让这些apk在不加改动的前提下在所有安卓的虚拟机中运行,谷歌采用了类似适配器的模式,即在文件的虚拟运行之前多一道工序,也就是dexopt。dexopt在dalvik虚拟机上的目标是将dex文件优化成odex文件,可以让虚拟机更加优化的执行;dexopt在art虚拟机中上的目标是将dex文件优化成二进制格式的文件,从可以让art虚拟机执行,上述dexopt会调用dex2oat进行,而dex2oat的任务是将原来的dex文件做预先的翻译,从而可以加快app运行的时间。可以认为,上述dex2oat的作用就是在art虚拟机中进行aot编译。

在步骤102中,检测上述编译请求是否来源于前台应用程序;

在本申请实施例中,上述前台应用程序具体为当前在前台运行的应用程序。显然,在移动终端已处于解锁状态却未运行有前台应用程序时,或者,在移动终端处于锁屏状态时,移动终端不会存在有前台应用程序。因而,在本步骤之前,可以先判断移动终端当前是否运行有前台应用程序,若移动终端当前未运行有前台应用程序,则可不对上述编译请求进行管理;若移动终端当前未运行有前台应用程序,则可继续执行上述步骤102。当检测发现上述编译请求来源于前台应用程序时,为了保障该前台应用程序的正常运行,可以直接将上述编译请求插入待执行的请求的队列中,其中,该该队列将会优先执行前台应用程序所发送的编译请求,对于其它编译请求则根据时间顺序依次执行。

在步骤103中,若上述编译请求非来源于前台应用程序,则检测当前的系统参数与预设的系统参数是否相匹配;

在本申请实施例中,移动终端在接收到到dex2oat编译请求时,将判断上述移动终端当前的系统负载是否较高,也即是检测上述移动终端当前的系统参数是否能够与预设的系统参数相匹配。可选地,上述系统参数包括但不限于系统的中央处理器(centralprocessingunit,cpu)负载状态、系统的输入输出(input/output,i/o)负载状态和/或系统的内存占用状态等。

在步骤104中,若当前的系统参数与上述预设的系统参数不匹配,则挂起上述编译请求。

在本申请实施例中,如果移动终端当前的系统参数无法与上述预设的系统参数相匹配,则表明上述移动终端当前的系统负载较高,此时,如果继续处理上述编译请求,则可能加重移动终端的系统负载,导致出现移动终端的运行卡顿现象,因而,在这种情况下,可以将上述编译请求挂起,待上述系统参数与上述预设的系统参数相匹配时,再对该编译请求进行下一步处理。

由上可见,通过本申请实施例,可以先在接收到编译请求时,拦截上述编译请求,然后检测上述编译请求是否来源于前台应用程序,其中,上述前台应用程序为当前在前台运行的应用程序,若上述编译请求非来源于前台应用程序,则检测当前的系统参数与预设的系统参数是否相匹配,若当前的系统参数与上述预设的系统参数不匹配,则挂起上述编译请求。本申请方案使得在当前系统负载较高时能够继续处理前台应用程序发送的编译请求,并暂停非前台应用程序发送的编译请求的进程,优先保障前台应用程序的正常运行,以此缓解安卓系统的卡顿问题。

应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。

实施例二

在上述实施例一的基础上,下面对本申请实施例提供的另一种数据处理方法进行描述,请参阅图2,本申请实施例中的数据处理方法包括:

在步骤201中,当接收到编译请求时,拦截上述编译请求;

在步骤202中,检测上述编译请求是否来源于前台应用程序;

在步骤203中,若上述编译请求非来源于前台应用程序,则检测当前的系统参数与预设的系统参数是否相匹配,若是,则执行步骤205,若否,则执行步骤204;

在步骤204中,挂起上述编译请求;

在本申请实施例中,上述步骤201、202、203、204与上述步骤101、102、103、104相同或相似,具体可参见上述步骤101、102、103、104的相关描述,在此不再赘述。

在步骤205中,将上述编译请求插入待执行的请求的队列中,以等待系统处理上述编译请求。

在本申请实施例中,如果移动终端当前的系统参数满足上述系统参数条件,则表明上述移动终端当前的系统负载较低,此时,移动终端仍有能力继续对新的请求进行处理,因而,可以将上述编译请求插入待执行的请求的队列中,以等待系统处理上述编译请求,移动终端每处理完一个请求,就可以在上述队列中提取一新的请求进行处理。

可选地,移动终端可以记录上述编译请求插入上述队列的时间,因而在上述步骤204之后,上述数据处理方法还包括:

当上述队列中的一个编译请求执行完毕后,检测上述队列中是否有前台应用程序发送的编译请求;

若上述队列中有前台应用程序发送的编译请求,则提取上述队列中上述前台应用程序发送的编译请求进行处理;

若上述队列中没有前台应用程序所发送的编译请求,则根据上述队列中各个编译请求插入上述队列的时间顺序提取编译请求进行处理。

在本申请实施例中,移动终端将有序提取上述队列中的请求进行处理,具体地,由于前台应用程序正在前台运行中,为了避免前台应用的运行发生卡顿,移动终端将优先处理上述前台应用程序的请求。需要注意的是,若队列中有前台应用程序发送的两个以上编译请求,则将根据上述前台应用程序发送的两个以上编译请求插入上述队列的时间先后的顺序,依次提取并进行处理。在将上述队列中的前台应用程序发送的编译请求处理完毕后,移动终端将根据余下的编译请求插入上述队列的时间先后的顺序,对队列中的编译请求继续进行处理,直至队列中的编译请求处理完毕。

可选地,上述步骤203及步骤103,包括:

以预设的间隔时间周期性检测当前的系统参数与预设的系统参数是否相匹配。

在本申请实施例中,在拦截到了编译请求后,如果该编译请求没有被处理,或者,如果该编译请求没有被插入至上述队列中,则表明移动终端当前的系统参数仍不满足预设的系统参数条件,在这种情况下,为了及时了解移动终端的实时系统参数,可以以预设的间隔时间周期性检测当前的系统参数与预设的系统参数是否相匹配,直至该编译请求被处理执行或者被插入至上述队列中。

可选地,上述步骤203及步骤103,还包括:

检测系统的中央处理器负载是否大于第一预设值、系统的输入输出负载是否大于第二预设值以及系统的内存占用率是否大于第三预设值;

相应地,上述步骤204及步骤104,包括:

若当前系统的中央处理器负载大于第一预设值、系统的输入输出负载大于第二预设值和/或系统的内存占用率大于第三预设值,则挂起上述编译请求。

在本申请实施例中,上述第一预设值,第二预设值及第三预设值可根据移动终端的硬件配置所确定,也即针对不同的移动终端,上述第一预设值,第二预设值及第三预设值可以不同,其具体数值此处不作限定。

由上可见,通过本申请实施例,可以先在接收到编译请求时,拦截上述编译请求,然后检测上述编译请求是否来源于前台应用程序,其中,上述前台应用程序为当前在前台运行的应用程序,若上述编译请求非来源于前台应用程序,则检测当前的系统参数与预设的系统参数是否相匹配,若当前的系统参数与上述预设的系统参数不匹配,则挂起上述编译请求。本申请方案使得在当前系统负载较高时能够继续处理前台应用程序发送的编译请求,并暂停非前台应用程序发送的编译请求的进程,优先保障前台应用程序的正常运行,以此缓解安卓系统的卡顿问题;而在当前系统负载较低时,移动终端也不会立刻就去处理编译请求,而是会将编译请求放入待执行的请求的队列中,使得移动终端能够保持对接收到的编译请求的有序处理,避免一次性处理过多请求而导致移动终端发生卡顿。

应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。

实施例三

本申请实施例三提供了一种数据处理装置,上述数据处理装置可集成于移动终端中,如图3所示,本申请实施例中的数据处理装置300包括:

拦截单元301,用于当接收到编译请求时,拦截上述编译请求;

第一检测单元302,用于检测上述编译请求是否来源于前台应用程序,其中,上述前台应用程序为当前在前台运行的应用程序;

第二检测单元303,用于若上述编译请求非来源于前台应用程序,则检测当前的系统参数与预设的系统参数是否相匹配;

管理单元304,用于若当前的系统参数与上述系统参数不匹配,则挂起上述编译请求。

可选地,上述管理单元304,还用于若上述编译请求来源于上述前台应用程序,或者,若当前的系统参数与上述预设的系统参数相匹配,则将上述编译请求插入待执行的请求的队列中,以等待系统处理上述编译请求。

可选地,上述数据处理装置300还包括:

队列检测单元,用于当上述队列中的一个编译请求执行完毕后,检测上述队列中是否有前台应用程序发送的编译请求;

请求提取单元,用于若上述队列中有前台应用程序发送的编译请求,则提取上述队列中上述前台应用程序发送的编译请求进行处理;

上述请求提取单元,还用于若上述队列中没有前台应用程序所发送的编译请求,则根据上述队列中各个编译请求插入上述队列的时间顺序提取编译请求进行处理。

可选地,上述拦截单元301,具体用于当系统的安卓运行时间art虚拟机接收到dex2oat编译请求时,拦截上述dex2oat编译请求。

可选地,上述第二检测单元303,具体用于以预设的间隔时间周期性检测当前的系统参数与预设的系统参数是否相匹配。

可选地,上述系统参数包括:系统的中央处理器负载状态、系统的输入输出负载状态和/或系统的内存占用状态。

可选地,上述第二检测单元303,具体用于检测系统的中央处理器负载是否大于第一预设值、系统的输入输出负载是否大于第二预设值以及系统的内存占用率是否大于第三预设值;

上述管理单元304,具体用于若当前系统的中央处理器负载大于第一预设值、系统的输入输出负载大于第二预设值和/或系统的内存占用率大于第三预设值,则挂起上述编译请求。

由上可见,通过本申请实施例,数据处理装置可以先在接收到编译请求时,拦截上述编译请求,然后检测上述编译请求是否来源于前台应用程序,其中,上述前台应用程序为当前在前台运行的应用程序,若上述编译请求非来源于前台应用程序,则检测当前的系统参数与预设的系统参数是否相匹配,若当前的系统参数与上述预设的系统参数不匹配,则挂起上述编译请求。本申请方案使得在当前系统负载较高时能够继续处理前台应用程序发送的编译请求,并暂停非前台应用程序发送的编译请求的进程,优先保障前台应用程序的正常运行,以此缓解安卓系统的卡顿问题。

实施例四

本申请实施例四提供了一种移动终端,请参阅图4,本申请实施例中的移动终端包括:存储器401,一个或多个处理器402(图4中仅示出一个)及存储在存储器401上并可在处理器上运行的计算机程序。其中:存储器401用于存储软件程序以及模块,处理器402通过运行存储在存储器401的软件程序以及单元,从而执行各种功能应用以及数据处理,以获取上述预设事件对应的资源。具体地,处理器402通过运行存储在存储器401的上述计算机程序时实现以下步骤:

当接收到编译请求时,拦截上述编译请求;

检测上述编译请求是否来源于前台应用程序,其中,上述前台应用程序为当前在前台运行的应用程序;

若上述编译请求非来源于前台应用程序,则检测当前的系统参数与预设的系统参数是否相匹配;

若当前的系统参数与上述系统参数不匹配,则挂起上述编译请求。

假设上述为第一种可能的实施方式,则在第一种可能的实施方式作为基础而提供的第二种可能的实施方式中,处理器402通过运行存储在存储器401的上述计算机程序时还实现以下步骤:

若上述编译请求来源于上述前台应用程序,或者,若当前的系统参数与上述预设的系统参数相匹配,则将上述编译请求插入待执行的请求的队列中,以等待系统处理上述编译请求。

在上述第二种可能的实施方式作为基础而提供的第三种可能的实施方式中,在上述将上述编译请求插入待执行的队列中之后,处理器402通过运行存储在存储器401的上述计算机程序时还实现以下步骤:

当上述队列中的一个编译请求执行完毕后,检测上述队列中是否有前台应用程序发送的编译请求;

若上述队列中有前台应用程序发送的编译请求,则提取上述队列中上述前台应用程序发送的编译请求进行处理;

若上述队列中没有前台应用程序所发送的编译请求,则根据上述队列中各个编译请求插入上述队列的时间顺序提取编译请求进行处理。

在上述第一种可能的实施方式作为基础,或者上述第二种可能的实施方式作为基础,或者上述第三种可能的实施方式作为基础而提供的第四种可能的实施方式中,上述当接收到编译请求时,拦截上述编译请求,包括:

当系统的安卓运行时间art虚拟机接收到dex2oat编译请求时,拦截上述dex2oat编译请求。

在上述第一种可能的实施方式作为基础,或者上述第二种可能的实施方式作为基础,或者上述第三种可能的实施方式作为基础而提供的第五种可能的实施方式中,上述检测当前的系统参数与预设的系统参数是否相匹配,包括:

以预设的间隔时间周期性检测当前的系统参数与预设的系统参数是否相匹配。

在上述第一种可能的实施方式作为基础,或者上述第二种可能的实施方式作为基础,或者上述第三种可能的实施方式作为基础而提供的第四种可能的实施方式中,上述系统参数包括:系统的中央处理器负载状态、系统的输入输出负载状态和/或系统的内存占用状态。

在上述第六种可能的实施方式作为基础而提供的第七种可能的实施方式中,上述检测当前的系统参数与预设的系统参数是否相匹配包括:

检测系统的中央处理器负载是否大于第一预设值、系统的输入输出负载是否大于第二预设值以及系统的内存占用率是否大于第三预设值;

相应的,上述若当前的系统参数与上述预设的系统参数不匹配,则挂起上述编译请求包括:

若当前系统的中央处理器负载大于第一预设值、系统的输入输出负载大于第二预设值和/或系统的内存占用率大于第三预设值,则挂起上述编译请求。

进一步,如图4所示,上述移动终端还可包括:一个或多个输入设备403(图4中仅示出一个)和一个或多个输出设备404(图4中仅示出一个)。存储器401、处理器402、输入设备403和输出设备404通过总线405连接。

应当理解,在本申请实施例中,所称处理器402可以是中央处理单元(centralprocessingunit,cpu),该处理器还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

输入设备403可以包括键盘、触控板、指纹采传感器(用于采集用户的指纹信息和指纹的方向信息)、麦克风等,输出设备404可以包括显示器、扬声器等。

存储器401可以包括只读存储器和随机存取存储器,并向处理器402提供指令和数据。存储器401的一部分或全部还可以包括非易失性随机存取存储器。例如,存储器401还可以存储设备类型的信息。

由上可见,通过本申请实施例,移动终端可以先在接收到编译请求时,拦截上述编译请求,然后检测上述编译请求是否来源于前台应用程序,其中,上述前台应用程序为当前在前台运行的应用程序,若上述编译请求非来源于前台应用程序,则检测当前的系统参数与预设的系统参数是否相匹配,若当前的系统参数与上述预设的系统参数不匹配,则挂起上述编译请求。本申请方案使得在当前系统负载较高时能够继续处理前台应用程序发送的编译请求,并暂停非前台应用程序发送的编译请求的进程,优先保障前台应用程序的正常运行,以此缓解安卓系统的卡顿问题。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将上述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

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

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者外部设备软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,上述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。

上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,上述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,上述计算机程序包括计算机程序代码,上述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。上述计算机可读存储介质可以包括:能够携带上述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机可读存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,上述计算机可读存储介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读存储介质不包括是电载波信号和电信信号。

以上上述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

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