应用程序的dex优化方法及终端与流程

文档序号:21550451发布日期:2020-07-21 10:56阅读:674来源:国知局
应用程序的dex优化方法及终端与流程

本发明涉及通信技术领域,特别涉及一种应用程序的dex优化方法及终端。



背景技术:

在android终端中,有一些应用程序在升级到新版本之后,需要进行dex(dendenkoshaelectronicexchange,数字交叉连接设备)优化。例如在新版本中增加了一些包含程序逻辑方法的class类,想要使用这些class类就必须在当前终端上执行dex优化操作,将这些class类转换成android终端可以理解的文件格式。dex优化操作由应用程序自身发起,用于优化指定的jar包或者apk。

dex优化实质上是android终端执行编译优化的过程,将原来的dex文件做预先的翻译,从而可以加快应用程序运行的时间。应用程序通常是在自升级后启动的过程中发起dex优化,目前dex优化的策略是创建固定数量的线程,一般线程数默认为cpu核数的最大值,即有多少个cpu核就创建多少个线程,占用了大量的cpu资源,因此经常会出现cpu资源被dex优化大量占用,导致没有足够的cpu资源使得应用程序正常启动,从而产生应用程序无响应的问题。



技术实现要素:

本发明要解决的技术问题是为了克服现有技术中无法针对显示屏幕上单一应用界面中窗口的显示效果进行调整的缺陷,提供一种应用程序的界面显示方法以及一种终端。

本发明是通过下述技术方案来解决上述技术问题的:

第一方面,本发明提供一种应用程序的dex优化方法,包括:

获取dex进程可使用的cpu资源;

根据dex进程可使用的cpu资源确定目标线程的数量和各目标线程可使用的cpu资源;其中,所述目标线程用于执行应用程序的dex优化操作;

创建所述数量的目标线程。

可选地,所述获取dex进程可使用的cpu资源,具体包括:

读取预设目录下的文件,得到dex进程可使用的cpu资源;其中,所述文件是系统侧进程根据cpu资源的占用情况通过写persist类型属性的方式生成的。

可选地,所述读取预设目录下的文件,得到dex进程可使用的cpu资源,具体包括:

读取预设目录下的文件,得到cpu资源的限制比例;

根据所述限制比例计算dex进程可使用的cpu资源。

可选地,所述根据dex进程可使用的cpu资源确定目标线程的数量,具体包括:

若dex进程可使用的cpu资源大于预设阈值,则将初始线程数作为目标线程的数量;

若dex进程可使用的cpu资源小于或等于预设阈值,则根据dex进程可使用的cpu资源计算目标线程的数量。

可选地,若dex进程可使用的cpu资源大于预设阈值,则各目标线程可使用的cpu资源均相同。

可选地,所述应用程序为系统应用程序或第三方应用程序。

第二方面,本发明提供一种终端,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序,以实现如上所述的方法。

第三方面,本发明提供一种计算机存储介质,所述计算机存储介质中存储有计算机程序指令,当所述指令在计算机上运行时,使得所述计算机执行如上所述的方法。

在符合本领域常识的基础上,上述各优选条件,可任意组合,即得本发明各较佳实例。

本发明的积极进步效果在于:通过获取dex进程可使用的cpu资源,根据dex进程可使用的cpu资源确定目标线程的数量和各目标线程可使用的cpu资源,以及创建所述数量的目标线程,实现了应用程序的dex优化操作。与现有dex优化方法相比,本发明中根据dex进程可使用的cpu资源确定创建目标线程的数量,即目标线程的数量是不固定的,若dex进程可使用的cpu资源较多,则创建较多数量的目标线程,若dex进程可使用的cpu资源较少,则创建较少数量的目标线程,避免了现有技术中dex优化需占用大量cpu资源导致应用程序无法正常启动的问题。另外,本发明根据cpu资源的占用情况为各目标线程设置可使用的cpu资源,保证了应用程序在任何时候都不会受dex优化抢占资源而无法正常启动。

附图说明

图1为本发明实施例提供的终端的结构示意图。

图2为本发明实施例提供的终端的桌面效果图。

图3为本发明实施例提供的应用程序的dex优化方法的流程图。

具体实施方式

下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。

本发明实施例提供的应用程序的dex优化方法可以应用于安装有android®开源操作系统的终端中,所述终端可以是手机、电视、电脑、智能手表等设备。

如图1所示,以终端为手机为例,对终端的结构进行说明。

终端100可以包括:射频(radiofrequency,rf)电路110、存储器120、输入单元130、显示单元140、传感器150、音频电路160、无线保真(wirelessfidelity,wi-fi)模块170、处理器180、蓝牙模块181、以及电源190等部件。

rf电路110可用于在收发信息或通话过程中信号的接收和发送,可以接收基站的下行数据后交给处理器180处理;可以将上行数据发送给基站。通常,rf电路包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器、双工器等器件。

存储器120可用于存储软件程序及数据。处理器180通过运行存储在存储器120的软件程序或数据,从而执行终端100的各种功能以及数据处理。存储器120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。存储器120存储有使得终端100能运行的android®开源操作系统。本申请中存储器120可以存储操作系统及各种应用程序,还可以存储执行本申请实施例所述方法的代码。

输入单元130(例如触摸屏)可用于接收输入的数字或字符信息,产生与终端100的用户设置以及功能控制有关的信号输入。具体地,输入单元130可以包括设置在终端100正面的触控屏131,可收集用户在其上或附近的触摸操作。本申请中输入单元130可以收集用户的触摸操作,例如点击按钮,拖动滚动框等。

显示单元140(即显示屏)可用于显示由用户输入的信息或提供给用户的信息以及终端100的各种菜单的图形用户界面(graphicaluserinterface,gui)。显示单元140可包括设置在终端100正面的显示屏141。其中,显示屏141可以采用液晶显示器、发光二极管等形式来配置。显示单元140可以用于显示本申请中所述的各种图形用户界面。触控屏131可以覆盖在显示屏141之上,也可以将触控屏131与显示屏141集成而实现终端100的输入和输出功能,集成后可以简称触摸显示屏。本申请中显示单元140可以显示应用程序以及对应的操作步骤。

终端100还可以包括至少一种传感器150,比如光传感器、运动传感器。终端100还可配置有陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器。

音频电路160、扬声器161、麦克风162可提供用户与终端100之间的音频接口。音频电路160可将接收到的音频数据转换后的电信号,传输到扬声器161,由扬声器161转换为声音信号输出;另一方面,麦克风162将收集的声音信号转换为电信号,由音频电路160接收后转换为音频数据,再将音频数据输出至rf电路110以发送给比如另一终端,或者将音频数据输出至存储器120以便进一步处理。本申请中麦克风162可以获取用户的语音。

wi-fi属于短距离无线传输技术,终端100可以通过wi-fi模块170帮助用户收发电子邮件、浏览网页和访问流媒体等,它为用户提供了无线的宽带互联网访问。

处理器180是终端100的控制中心,利用各种接口和线路连接整个终端的各个部分,通过运行或执行存储在存储器120内的软件程序,以及调用存储在存储器120内的数据,执行终端100的各种功能和处理数据。在一些实施例中,处理器180可包括一个或多个处理单元;处理器180还可以集成应用处理器和基带处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,基带处理器主要处理无线通信。可以理解的是,上述基带处理器也可以不集成到处理器180中。本申请中处理器180可以运行操作系统、应用程序、用户界面显示及触控响应,以及本申请实施例所述的应用程序的dex优化方法。

蓝牙模块181,用于通过蓝牙协议来与其他具有蓝牙模块的蓝牙设备进行信息交互。例如,终端100可以通过蓝牙模块181与同样具备蓝牙模块的可穿戴电子设备(例如智能手表)建立蓝牙连接,从而进行数据交互。

终端100还包括给各个部件供电的电源190(比如电池)。电源可以通过电源管理系统与处理器180逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗等功能。

如图2所示,终端中安装的应用程序“h应用”在连接蜂窝网络或者无线网络的环境下已升级到新版本,由于新版本中增加了class类,因此需要进行dex优化。当用户点击启动h应用时,dex进程被触发启动,后续开始执行本发明实施例提供的应用程序的dex优化方法,以完成h应用的dex优化。

如图3所示,本发明实施例提供的应用程序的dex优化方法,包括:

步骤301、获取dex进程可使用的cpu资源。

其中,应用程序为安装在上述终端中的应用程序,具体可以为系统应用程序,也可以为第三方应用程序。

在可选的一种实施方式中,通过如下方式获取dex进程可使用的cpu资源:读取预设目录下的文件,得到dex进程可使用的cpu资源;其中,所述文件是系统侧进程根据cpu资源的占用情况通过写persist类型属性的方式生成的。

在android终端中,系统侧进程通过写persist类型属性的方式,可以使得data/property目录下生成一个对应的同名文件。具体地,系统侧进程使用接口systemproperties.set写persist类型属性,例如(“persist.sys.cpu.max”,“10”)代表名为“persist.sys.cpu.max”的persist类型属性,属性值为“10”,对应地,会在data/property目录下生成一个文件名为persist.sys.cpu.max的文件,这个文件的内容是数字“10”。

本发明实施例中,系统侧进程是根据cpu资源的占用情况写persist类型属性的。在可选的一种实施方式中,系统侧进程直接将persist类型属性的值写为dex进程可使用的cpu资源,例如目前终端上其他应用程序的运行已占用总cpu资源的60%,根据经验值为dex进程分配总cpu资源的30%,在cpu核数为8的情况下,dex进程可使用的cpu资源为240%,那么就可以将persist类型属性的值写为240。

在可选的另一种实施方式中,系统侧进程将persist类型属性的值写为cpu资源的限制比例。上述读取预设目录下的文件,得到dex进程可使用的cpu资源的步骤,具体包括:

读取预设目录下的文件,得到cpu资源的限制比例;

根据所述限制比例计算dex进程可使用的cpu资源。

在上述例子中,系统侧进程可以将persist类型属性的值写为30。在本实施例方法中,读取预设目录下的文件得到cpu资源的限制比例为30%,根据限制比例30以及当前cpu核数例如8,计算得到dex进程可使用的cpu资源为240%。

在上述例子中,系统侧进程根据经验值为dex进程分配cpu资源或者限制比例,在可选的一种实施方式中,设计用户交互的应用界面,系统侧进程根据用户输入至应用界面的值为dex进程分配cpu资源或者限制比例。

步骤302、根据dex进程可使用的cpu资源确定目标线程的数量和各目标线程可使用的cpu资源;其中,所述目标线程用于执行应用程序的dex优化操作。

步骤302中,根据dex进程可使用的cpu资源确定的目标线程的数量可以为一个,也可以为多个。各目标线程可使用的cpu资源可以相同,也可以不同。

在上述例子中提到,若dex进程可使用的cpu资源为240%,例如确定目标线程的数量为三个,可以将这三个目标线程可使用的cpu资源均设为80%,也可以将一个目标线程可使用的cpu资源设为60%,另外两个目标线程可使用的cpu资源均设为90%。

在另一个例子中,若dex进程可使用的cpu资源为80%,则可以确定目标线程的数量为一个,将目标线程可使用的cpu资源设为80%,也可以确定目标线程的数量为两个,分别将两个目标线程可使用的cpu资源设为40%。

在可选的一种实施方式中,所述根据dex进程可使用的cpu资源确定目标线程的数量,具体包括:

若dex进程可使用的cpu资源大于预设阈值,则将初始线程数作为目标线程的数量;

若dex进程可使用的cpu资源小于或等于预设阈值,则根据dex进程可使用的cpu资源计算目标线程的数量。

其中,预设阈值可以根据一般情况下dex进程所需的最大cpu资源确定,例如500%。初始线程数是指现有技术中-j<线程数>的缺省值,默认为cpu核数,例如-j8。本实施例中,若dex进程可使用的cpu资源大于预设阈值,说明终端中其他应用程序所占用的cpu资源较少,此时在现有技术中初始线程数的范围内无论创建多少个目标线程也不会导致没有足够的cpu资源使得进行dex优化的应用程序正常启动,本实施例中将初始线程数作为目标线程的数量。

在可选的一种实施方式中,若dex进程可使用的cpu资源大于预设阈值,则各目标线程可使用的cpu资源均相同。本实施例中,若dex进程可使用的cpu资源大于预设阈值,则按照现有技术确定目标线程的数量和各目标线程可使用的cpu资源,不再赘述。

步骤303、创建所述数量的目标线程。

在上述实施方式中,若为目标线程设置了可使用的cpu资源,则将目标线程的id号及其对应的目标线程可使用的cpu资源下发至终端的驱动模块,以便驱动模块根据目标线程的id号限制对应的目标线程可使用的cpu资源。

在可选的另一种实施方式中,系统侧进程可以根据cpu资源的占用情况写多个persist类型属性,对应地会在预设目录下生成多个文件。例如系统侧进程根据整个系统当前已占用的cpu资源是否超过一定阈值写名为persist.sys.cpu.overload的persist类型属性,具体地,若当前已占用的cpu资源超过一定阈值例如50%,则将persist.sys.cpu.overload的属性值设为true,否则设为false。与之对应地,在data/property目录下会生成文件名为persist.sys.cpu.overload的文件,这个文件的内容是字符串“true”或者“false”。系统进程还可以根据为dex进程分配的cpu资源写名为persist.sys.cpu.max的persist类型属性,具体地,可以persist.sys.cpu.max的属性值设为cpu资源的限制比例例如30,或者直接设为dex进程可使用的cpu资源例如240。

在本实施例方法中,读取data/property目录下的persist.sys.cpu.overload文件,若得到false,则将初始线程数作为目标线程的数量,并创建所述数量的目标线程,以实现应用程序的dex优化操作;若得到true,则读取data/property目录下的persist.sys.cpu.max文件,得到dex进程可使用的cpu资源,并据此计算目标线程的数量,以实现应用程序的dex优化操作。

在上述实施方式中,系统侧进程根据cpu资源的占用情况写persist类型属性,在可选的另一种实施方式中,系统侧进程还可以根据其他条件写persist类型属性,例如根据终端当前所处的状态写名为persist.sys.idle的persist类型属性,具体地,若终端当前所处的状态为待机状态,则将persist.sys.idle的属性值设为true,否则设为false。与之对应地,在data/property目录下会生成文件名为persist.sys.idle的文件,这个文件的内容是字符串“true”或者“false”。

在本实施例方法中,读取data/property目录下的persist.sys.idle文件,若得到true,则将初始线程数作为目标线程的数量,并创建所述数量的目标线程,以实现应用程序的dex优化操作;若得到false,则读取data/property目录下的其他文件以获取dex进程可使用的cpu资源,例如可以读取persist.sys.cpu.max文件。

本发明实施例提供一种终端,包括:处理器和存储器,存储器用于存储计算机程序,处理器用于执行所述计算机程序,以执行如上述实施例提供的应用程序的界面显示方法。

本发明实施例提供一种计算机存储介质,所述计算机存储介质中存储有计算机程序指令,当所述指令在计算机上运行时,使得所述计算机执行如上述实施例提供的应用程序的界面显示方法。

由于本发明实施例中的终端和计算机存储介质可以应用于上述应用程序的dex优化方法,因此,其所能获得的技术效果也可参考上述方法实施例,本发明的实施例在此不再赘述。

与现有dex优化方法相比,本发明实施例中根据dex进程可使用的cpu资源确定创建目标线程的数量,即目标线程的数量是不固定的,若dex进程可使用的cpu资源较多,则创建较多数量的目标线程,若dex进程可使用的cpu资源较少,则创建较少数量的目标线程,避免了现有技术中dex优化需占用大量cpu资源导致应用程序无法正常启动的问题。另外,本发明实施例还可以实现根据cpu资源的占用情况为各目标线程设置可使用的cpu资源,保证了应用程序在任何时候都不会受dex优化抢占资源而无法正常启动。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。

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