卡顿优化方法、装置、终端和计算机可读存储介质与流程

文档序号:20837534发布日期:2020-05-22 17:03阅读:173来源:国知局
卡顿优化方法、装置、终端和计算机可读存储介质与流程

本发明涉及终端的数据处理领域,具体而言,涉及一种卡顿优化方法、装置、终端和计算机可读存储介质。



背景技术:

目前应用市场上已经有相当一部分体量大,业务复杂的大型应用,这些大型应用在启动时往往需要对很多的自身服务,或是第三方库等内容进行初始化,第三方库为第三方提供的一些可以即插即用的代码模块。

在这些初始化任务中,有相当一部分的应用程序的任务因为各种原因,必须在应用程序的主线程中进行。然而,应用程序所有的用户界面设计(userinterface,ui)绘制进程也在主线程中进行,当应用程序和第三方库或服务插入到主线程中时,会对主线程中ui绘制造成较多的阻塞,对用户而言,用户在终端上就会感到应用程序具有比较明显的卡顿。



技术实现要素:

有鉴于此,本发明的目的在于提供一种卡顿优化方法、装置、终端和计算机可读存储介质。

为了实现上述目的,本发明实施例采用的技术方案如下:

第一方面,实施例提供一种卡顿优化方法,应用于终端,所述终端上设置有应用程序,所述方法包括:获取所述应用程序的初始化任务;所述初始化任务包括启动所述应用程序时的界面绘制进程和待执行任务。获取所述界面绘制进程的绘制间隔时间;所述绘制间隔时间为执行所述界面绘制进程中的等待时间。当执行所述界面绘制进程时,将所述待执行任务分配至所述绘制间隔时间中执行。

在可选的实施方式中,所述将所述待执行任务分配至所述绘制间隔时间中执行,包括:将所述待执行任务拆分为多个待执行子任务;所述待执行子任务的执行时间小于或等于所述绘制间隔时间;将至少一个所述待执行子任务分配至所述绘制间隔时间中执行。

在可选的实施方式中,所述界面绘制进程包括多帧图像的绘制,所述获取所述界面绘制进程的绘制间隔时间,包括:获取相邻的任意两张所述图像的绘制间隔时间;所述绘制间隔时间为所述图像的预设绘制时间与实际绘制时间的差值。

在可选的实施方式中,所述待执行子任务具有序列标识,所述将至少一个所述待执行子任务分配至所述绘制间隔时间中执行,包括:根据所述序列标识和所述绘制间隔时间,获取每个所述待执行子任务的时延信息;根据所述时延信息,依次执行每个所述待执行子任务。

在可选的实施方式中,所述待执行子任务具有序列标识,所述将所述待执行任务拆分为多个待执行子任务,包括:判断第一待执行子任务的执行时间是否小于或等于第一绘制间隔时间;所述第一待执行子任务为所述多个待执行子任务中的任意一个,所述第一绘制间隔时间为执行所述界面绘制进程时,绘制任一帧图像后的等待时间。若是,则将所述第一待执行子任务分配至所述第一绘制间隔时间执行;若否,则将所述第一待执行子任务分配在执行完成所述界面绘制进程之后执行。

第二方面,实施例提供一种卡顿优化装置,所述卡顿优化装置上设置有应用程序,所述卡顿优化装置包括:获取模块和处理模块。所述获取模块用于获取所述应用程序的初始化任务;所述初始化任务包括启动所述应用程序时的界面绘制进程和待执行任务;所述获取模块还用于获取所述界面绘制进程的绘制间隔时间;所述绘制间隔时间为执行所述界面绘制进程中的等待时间;所述处理模块用于当执行所述界面绘制进程时,将所述待执行任务分配至所述绘制间隔时间中执行。

在可选的实施方式中,所述处理模块还用于将所述待执行任务拆分为多个待执行子任务;所述待执行子任务的执行时间小于或等于所述绘制间隔时间;所述处理模块还用于将至少一个所述待执行子任务分配至所述绘制间隔时间中执行。

在可选的实施方式中,所述界面绘制进程包括多帧图像的绘制,所述获取模块还用于获取相邻的任意两张所述图像的绘制间隔时间;所述绘制间隔时间为所述图像的预设绘制时间与实际绘制时间的差值。

在可选的实施方式中,所述待执行子任务具有序列标识,所述处理模块还用于根据所述序列标识和所述绘制间隔时间,获取每个所述待执行子任务的时延信息;所述处理模块还用于根据所述时延信息,依次执行每个所述待执行子任务。

在可选的实施方式中,所述处理模块还用于判断第一待执行子任务的执行时间是否小于或等于第一绘制间隔时间;所述第一待执行子任务为所述多个待执行子任务中的任意一个,所述第一绘制间隔时间为执行所述界面绘制进程时,绘制任一帧图像后的等待时间;所述处理模块还用于若所述执行时间小于或等于所述第一绘制间隔时间时,将所述第一待执行子任务分配至所述第一绘制间隔时间执行;所述处理模块还用于若所述执行时间大于所述第一绘制间隔时间时,将所述第一待执行子任务分配在执行完成所述界面绘制进程之后执行。

第三方面,实施例提供一种终端,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的机器可执行指令,所述处理器可执行所述机器可执行指令以实现前述实施方式任一项所述的方法。

第四方面,实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现前述实施方式任一项所述的方法。

相较于现有技术,本发明提出一种卡顿优化方法、装置、终端和计算机可读存储介质,涉及终端的数据处理领域。该卡顿优化方法应用于终端,所述终端上设置有应用程序,该卡顿优化方法包括:获取所述应用程序的初始化任务;所述初始化任务包括启动所述应用程序时的界面绘制进程和待执行任务;获取所述界面绘制进程的绘制间隔时间;所述绘制间隔时间为执行所述界面绘制进程中的等待时间;当执行所述界面绘制进程时,将所述待执行任务分配至所述绘制间隔时间中执行。启动终端的应用程序时,将待执行任务放在界面绘制进程中的等待时间中进行,相较于现有技术在界面绘制进程完成之后,再执行待执行任务,可以明显的改善用户界面的卡顿情况,提高用户的使用体验。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

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

图2为本发明实施例提供一种卡顿优化方法的流程示意图;

图3为本发明实施例提供的一种绘制间隔时间的示意图;

图4为本发明实施例提供的另一种卡顿优化方法的流程示意图;

图5为本发明实施例提供的另一种卡顿优化方法的流程示意图;

图6为本发明实施例提供的另一种卡顿优化方法的流程示意图;

图7为本发明实施例提供的另一种卡顿优化方法的流程示意图;

图8-1为现有方案的一种应用程序初始化的示意图;

图8-2为本发明实施例提供的一种应用程序初始化的示意图;

图8-3为本发明实施例提供的另一种应用程序初始化的示意图;

图8-4为本发明实施例提供的另一种应用程序初始化的示意图;

图8-5为本发明实施例提供的另一种应用程序初始化的示意图;

图9为本发明实施例提供的一种卡顿优化装置的方框示意图。

图标:100-终端,110-处理器,120-外部存储器接口,121-内部存储器,130-usb接口,140-充电管理模块,141-电源管理模块,142-电池,150-移动通信模块,160-无线通信模块,180-传感器模块,192-指示器,193-摄像头,194-显示屏,40-卡顿优化装置,41-获取模块,42-处理模块。

具体实施方式

下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。

因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,术语“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

目前应用市场上已经有相当一部分体量大,业务复杂的大型应用,这些大型应用在启动时往往需要对很多的自身服务,或是第三方库等内容进行初始化,第三方库为第三方提供的一些可以即插即用的代码模块。在这些初始化任务中,有相当一部分的应用程序的任务因为各种原因,必须在应用程序的主线程中进行。然而,应用程序所有的ui绘制进程也在主线程中进行,当应用程序和第三方库或服务插入到主线程中时,会对主线程中ui绘制造成较多的阻塞,对用户而言,用户在终端上就会感到应用程序具有比较明显的卡顿。

为了解决上述问题,本发明实施例提供一种终端升级方法,该方法应用于终端,请参见图1,图1为本发明实施例提供的一种终端的结构示意图。终端100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universalserialbus,usb)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,传感器模块180,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriberidentificationmodule,sim)卡接口等。其中传感器模块180可以包括,但不限于压力传感器、陀螺仪传感器、气压传感器、磁传感器、加速度传感器、距离传感器、接近光传感器、指纹传感器、温度传感器、触摸传感器、环境光传感器、骨传导传感器等。

本发明实施例提供的卡段优化方法可以应用于手机、平板电脑、可穿戴设备、车载设备、增强现实(augmentedreality,ar)/虚拟现实(virtualreality,vr)设备、笔记本电脑、超级移动个人计算机(ultra-mobilepersonalcomputer,umpc)、上网本、个人数字助理(personaldigitalassistant,pda)等终端上,本发明实施例对终端的具体类型不作任何限制。

可以理解的是,本发明实施例示意的结构并不构成对终端100的具体限定。在本申请另一些实施例中,终端100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。

处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(applicationprocessor,ap),调制解调处理器,图形处理器(graphicsprocessingunit,gpu),图像信号处理器(imagesignalprocessor,isp),控制器,存储器,视频编解码器,数字信号处理器(digitalsignalprocessor,dsp),基带处理器,和/或神经网络处理器(neural-networkprocessingunit,npu)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。其中,控制器可以是终端100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。

处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。

在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integratedcircuit,i2c)接口,集成电路内置音频(inter-integratedcircuitsound,i2s)接口,脉冲编码调制(pulsecodemodulation,pcm)接口,通用异步收发传输器(universalasynchronousreceiver/transmitter,uart)接口,移动产业处理器接口(mobileindustryprocessorinterface,mipi),通用输入输出(general-purposeinput/output,gpio)接口,用户标识模块(subscriberidentitymodule,sim)接口,和/或通用串行总线(universalserialbus,usb)接口等。

i2c接口是一种双向同步串行总线,包括一根串行数据线(serialdataline,sda)和一根串行时钟线(derailclockline,scl)。在一些实施例中,处理器110可以包含多组i2c总线。处理器110可以通过不同的i2c总线接口分别耦合触摸传感器、充电器、闪光灯、摄像头193等。例如:处理器110可以通过i2c接口耦合触摸传感器,使处理器110与触摸传感器通过i2c总线接口通信,实现终端100的触摸功能。

usb接口130是符合usb标准规范的接口,具体可以是miniusb接口,microusb接口,usbtypec接口等。usb接口130可以用于连接充电器为终端100充电,也可以用于终端100与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他终端,例如ar设备等。

可以理解的是,本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对终端100的结构限定。在本申请另一些实施例中,终端100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。

充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过usb接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过终端100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为终端供电。

电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,显示屏194,摄像头193,和无线通信模块160等供电。电源管理模块141还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。

终端100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。

天线1和天线2用于发射和接收电磁波信号。终端100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。

移动通信模块150可以提供应用在终端100上的包括2g/3g/4g/5g等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(lownoiseamplifier,lna)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器,受话器等)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。

无线通信模块160可以提供应用在终端100上的包括无线局域网(wirelesslocalareanetworks,wlan)(如无线保真(wirelessfidelity,wi-fi)网络),蓝牙(bluetooth,bt),全球导航卫星系统(globalnavigationsatellitesystem,gnss),调频(frequencymodulation,fm),近距离无线通信技术(nearfieldcommunication,nfc),红外技术(infrared,ir)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。

在一些实施例中,终端100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得终端100可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(globalsystemformobilecommunications,gsm),通用分组无线服务(generalpacketradioservice,gprs),码分多址接入(codedivisionmultipleaccess,cdma),宽带码分多址(widebandcodedivisionmultipleaccess,wcdma),时分码分多址(time-divisioncodedivisionmultipleaccess,tdscdma),长期演进(longtermevolution,lte),bt,gnss,wlan,nfc,fm,和/或ir技术等。所述gnss可以包括全球卫星定位系统(globalpositioningsystem,gps),全球导航卫星系统(globalnavigationsatellitesystem,glonass),北斗卫星导航系统(beidounavigationsatellitesystem,bds),准天顶卫星系统(quasi-zenithsatellitesystem,qzss)和/或星基增强系统(satellitebasedaugmentationsystems,sbas)。

终端100通过gpu,显示屏194,以及应用处理器等实现显示功能。gpu为图像处理的微处理器,连接显示屏194和应用处理器。gpu用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个gpu,其执行程序指令以生成或改变显示信息。

显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquidcrystaldisplay,lcd),有机发光二极管(organiclight-emittingdiode,oled),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganiclightemittingdiode的,amoled),柔性发光二极管(flexlight-emittingdiode,fled),miniled,microled,micro-oled,量子点发光二极管(quantumdotlightemittingdiodes,qled)等。在一些实施例中,终端100可以包括1个或n个显示屏194,n为大于1的正整数。

终端100可以通过isp,摄像头193,视频编解码器,gpu,显示屏194以及应用处理器等实现拍摄功能。

isp用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给isp处理,转化为肉眼可见的图像。isp还可以对图像的噪点,亮度,肤色进行算法优化。isp还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,isp可以设置在摄像头193中。

摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(chargecoupleddevice,ccd)或互补金属氧化物半导体(complementarymetal-oxide-semiconductor,cmos)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给isp转换成数字图像信号。isp将数字图像信号输出到dsp加工处理。dsp将数字图像信号转换成标准的rgb、yuv等格式的图像信号。在一些实施例中,终端100可以包括1个或n个摄像头193,n为大于1的正整数。

数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当终端100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。

视频编解码器用于对数字视频压缩或解压缩。终端100可以支持一种或多种视频编解码器。这样,终端100可以播放或录制多种编码格式的视频,例如:动态图像专家组(movingpictureexpertsgroup,mpeg)1,mpeg2,mpeg3,mpeg4等。

npu为神经网络(neural-network,nn)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过npu可以实现终端100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。

外部存储器接口120可以用于连接外部存储卡,例如microsd卡,实现扩展终端100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。

内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行终端100的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储终端100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universalflashstorage,ufs)等。

压力传感器用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器可以设置于显示屏194。压力传感器的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器,电极之间的电容改变。终端100根据电容的变化确定压力的强度。当有触摸操作作用于显示屏194,终端100根据压力传感器检测所述触摸操作强度。终端100也可以根据压力传感器的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。例如:当有触摸操作强度小于第一压力阈值的触摸操作作用于短消息应用图标时,执行查看短消息的指令。当有触摸操作强度大于或等于第一压力阈值的触摸操作作用于短消息应用图标时,执行新建短消息的指令。

环境光传感器用于感知环境光亮度。终端100可以根据感知的环境光亮度自适应调节显示屏194亮度。环境光传感器也可用于拍照时自动调节白平衡。环境光传感器还可以与接近光传感器配合,检测终端100是否在口袋里,以防误触。

指纹传感器用于采集指纹。终端100可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。

触摸传感器,也称“触控面板”。触摸传感器可以设置于显示屏194,由触摸传感器与显示屏194组成触摸屏,也称“触控屏”。触摸传感器用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器也可以设置于终端100的表面,与显示屏194所处的位置不同。

指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。

sim卡接口用于连接sim卡。sim卡可以通过插入sim卡接口,或从sim卡接口拔出,实现和终端100的接触和分离。终端100可以支持1个或n个sim卡接口,n为大于1的正整数。sim卡接口可以支持nanosim卡,microsim卡,sim卡等。同一个sim卡接口可以同时插入多张卡。所述多张卡的类型可以相同,也可以不同。sim卡接口也可以兼容不同类型的sim卡。sim卡接口也可以兼容外部存储卡。终端100通过sim卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,终端100采用esim,即:嵌入式sim卡。esim卡可以嵌在终端100中,不能和终端100分离。

终端100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。

目前的技术方案中,andorid操作系统的采用单线程模型,即当应用启动后系统创建了一个进程时,会在进程中创建一个主线程,主线程需要全权负责ui绘制,用户点击等交互事件的传递。例如,一种情况下,andorid系统每秒将会绘制60帧图像,也即约每16.7毫秒(ms)绘制一帧图像。若图像绘制任务繁忙或主线程有其他任务在执行时,某帧的绘制工作超过了16.7ms,就会导致丢帧。现今的移动应用为吸引新用户眼球,很多都会在应用启动时加入一些动画等比较炫酷的ui效果,此时这些ui效果与前述必须在主线程中进行的初始化任务扎堆,会导致主线程中工作繁忙,让用户感觉到动画一顿一顿,或是界面的展示有跳跃,严重的时候,甚至会一阵子卡住在某帧图像不变化。

下面以图1示出的终端的分层架构为android系统为例,示例性说明本发明的卡顿优化方法,请参见图2,图2为本发明实施例提供一种卡顿优化方法的流程示意图。该卡顿优化方法应用于终端,终端上设置有应用程序,该卡顿优化方法包括:

s31、获取应用程序的初始化任务。

该初始化任务包括启动应用程序时的界面绘制进程(ui绘制进程)和待执行任务。例如,当终端为android系统时,启动应用程序并进行初始化时,ui绘制进程和待执行任务都会在终端的主线程中进行。

s32、获取界面绘制进程的绘制间隔时间。

该绘制间隔时间为执行界面绘制进程中的等待时间。例如,当终端的主线程执行ui绘制进程时,如果每帧图像的预设绘制时间是确定的,而终端提前完成了单帧图像的绘制,则在两帧图像的绘制之间就存在一个等待时间,该等待时间即可作为绘制间隔时间。

s33、当执行界面绘制进程时,将待执行任务分配至绘制间隔时间中执行。

应理解,将待执行任务分配至绘制间隔时间中执行,相较于现有技术在界面绘制进程完成之后,再执行待执行任务,可以明显的改善用户界面的卡顿情况。

另外,相较于现有技术选用ui绘制进程中的部分不容易察觉卡顿的ui效果进行播放,以使用户不易察觉到应用程序的卡顿,而实际的ui绘制进程和待执行任务的总执行时间却并未减少,使用本发明实施例提供的卡顿优化方法,将待执行任务分配到了ui绘制进程中的等待时间,减少了执行完成ui绘制进程和待执行任务的总执行时间,从根源上减少了应用程序的卡顿。

为了便于理解上述的绘制间隔时间,请参见图3,图3为本发明实施例提供的一种绘制间隔时间的示意图,其中,pt1~pt5依次为ui绘制进程中第一帧图像至第五帧图像的实际绘制时间,t1~t5依次为ui绘制进程中第一帧图像至第五帧图像结束当前绘制的等待时间,即本发明实施例中的绘制间隔时间。

例如,android系统在每16.7ms会产生一个垂直同步信号,cpu或gpu接收到该垂直同步信号后,会开始新一帧图像的绘制,每绘制一帧的间隔是16.7ms,但实际上绘制工作并不需要占满这16.7ms。

理想状态下,为了防止丢帧,需要在下一次垂直同步信号到来时保证主线程没有在执行其他的任务,并在接收到新的垂直同步信号时,立即开始进行新一帧的绘制工作;换句话说,假如当前帧的绘制工作需要6ms,那么这一帧将会有16.7-6=11.7ms的空闲时间(等待时间),利用此段空闲时间(等待时间)来进行一些工作,是不会对android系统的ui绘制工作造成影响的。

在可选的实施方式中,待执行任务的执行时间可能会大于绘制间隔时间,在待执行任务的执行时间大于绘制间隔时间时,也会造成应用程序的卡顿;因此,为了避免上述情况的发生,在图2的基础上,给出一种可能的实现方式,请参见图4,图4为本发明实施例提供的另一种卡顿优化方法的流程示意图。上述的s33可以包括:

s331、将待执行任务拆分为多个待执行子任务。

该待执行子任务的执行时间小于或等于绘制间隔时间。

s332、将至少一个待执行子任务分配至绘制间隔时间中执行。

例如,可以在测量得知每个应用程序的待执行任务的大致耗时后,对待执行任务进行拆分,使得每个拆分后的待执行子任务耗时小于或等于每帧图像的绘制间隔时间;这样,主线程在绘制完一帧图像后,就执行一个待执行子任务,恰好能在下一帧图像绘制的开始时间前后完成工作,及时开始下一帧图像的绘制。应理解,对大量的待执行任务都采用拆分处理后,整体帧率相对于拆分前会有比较大的提升;整体帧率为单位时间内的图像帧数。

应理解,只要上述的任一个待执行子任务在绘制间隔时间中执行,而不是所有的待执行子任务都在界面绘制进程结束后执行,本发明实施例提供的卡顿优化方法实现的初始化应用程序的总执行时间就比现有技术的更少;相较于现有技术中的启动并初始化应用程序,本发明实时例提供的卡顿优化方法就已经改善了应用程序的启动和初始化过程中的卡顿。

在可选的实施方式中,界面绘制进程中的图像绘制,每帧图像的绘制时间并不一定相同,为了准确的获取绘制每帧图像的等待时间,在图4的基础上,以界面绘制进程包括多帧图像的绘制为例,请参见图5,图5为本发明实施例提供的另一种卡顿优化方法的流程示意图。上述的s32可以包括:

s321、获取相邻的任意两帧图像的绘制间隔时间。

该绘制间隔时间为图像的预设绘制时间与实际绘制时间的差值。

可以理解的,当每帧图像的绘制时间不同时,对于每帧图像来说,其等待绘制下一帧的绘制间隔时间也并不相同。通过获取任意两帧图像的绘制间隔时间,可以更为有效的分配待执行子任务,以便减少应用程序的卡顿。

在可选的实施方式中,多个待执行子任务之间可能具有时序关系或逻辑的先后关系,为了避免待执行任务的执行次序混乱,在图4的基础上,以待执行子任务具有序列标识为例,请参见图6,图6为本发明实施例提供的另一种卡顿优化方法的流程示意图。上述的s332可以包括:

s332a、根据序列标识和绘制间隔时间,获取每个待执行子任务的时延信息。

s332b、根据时延信息,依次执行每个待执行子任务。

可以理解的,在主线程之中不能同时执行两个待执行子任务,通过序列标识和绘制间隔时间,确定执行每个待执行子任务的时延信息,进而使每个待执行子任务满足执行的时序关系或逻辑的先后关系,可以使待执行任务有序的执行完成,避免了发生数据紊乱。

例如,假设该待执行任务的平均耗时为100ms,每帧图像的预设绘制时间为16.7ms,每帧图像的实际绘制时间需要6.7ms:在待执行任务未经拆分时,待执行任务需要连续执行100ms,导致连续丢掉6帧ui绘制进程中的图像,用户能够观察到画面突然卡住不动了100ms,体验较差;此时,理想状态下,本发明实施例提供的卡顿优化方法,其目标是将待执行任务按照执行顺序拆分为子任务1~子任务10,共计10个任务;且每个任务耗时10ms,分别插在每帧的绘制间隔时间中执行,由于这些子任务的耗时与每帧图像的等待时间恰好相等(16.7ms-6.7ms=10ms),完全没有影响到ui绘制进程,因此导致的丢帧数是零,用户完全无法感知到任何的卡顿。

在可选的实施方式中,待执行子任务的执行时间可能大于绘制间隔时间,如果此时还将待执行子任务放在绘制间隔时间中执行,会影响ui绘制进程中下一帧图像的绘制,在图4的基础上,以待执行子任务具有序列标识为例,请参见图7,图7为本发明实施例提供的另一种卡顿优化方法的流程示意图。上述的s331可以包括:

s331a、判断第一待执行子任务的执行时间是否小于或等于第一绘制间隔时间。

该第一待执行子任务为多个待执行子任务中的任意一个,第一绘制间隔时间为执行界面绘制进程时,绘制任一帧图像后的等待时间。

若是,则执行s331b;若否,则执行s331c。

s331b、将第一待执行子任务分配至第一绘制间隔时间执行。

s331c、将第一待执行子任务分配在执行完成界面绘制进程之后执行。

可以理解的,若第一待执行子任务的执行时间大于第一绘制间隔时间,将第一待执行子任务放置在第一绘制间隔时间中执行,会影响ui绘制进程中下一帧图像的绘制,因此将执行时间大于第一绘制间隔时间的待执行子任务放置在ui绘制进程后,以减少掉帧,提高用户体验。

为了便于理解上述的卡顿优化方法,请参见图8-1,图8-1为现有方案的一种应用程序初始化的示意图,其中,st为多个待执行子任务的总执行时间,整个应用程序初始化的总时间为:

其中,pti为第i帧图像的实际绘制时间,tj为第j帧图像的绘制间隔时间。

使用本发明实施例提供的卡顿优化方法,在理想状态下,每个待执行子任务均匀分布在多个绘制间隔时间内,请参见图8-2,图8-2为本发明实施例提供的一种应用程序初始化的示意图,其中,at1~at5依次为第一个待执行子任务至第五个待执行子任务的执行时间,且

整个应用程序初始化的总时间为:

显而易见的是,使用本发明实施例提供的卡顿优化方法可以有效的改善应用程序初始化的卡顿情况。

在实际使用本发明实施例提供的卡顿优化方法时,每个待执行子任务错落分布在不同的绘制间隔时间中,请参见图8-3,图8-3为本发明实施例提供的另一种应用程序初始化的示意图,其中,bt1~bt3依次为第一个待执行子任务至第三个待执行子任务的执行时间,且

整个应用程序初始化的总时间为:

显而易见的是,使用本发明实施例提供的卡顿优化方法可以有效的改善应用程序初始化的卡顿情况。

在实际使用本发明实施例提供的卡顿优化方法时,每个待执行子任务错落分布在不同的绘制间隔时间中,且待执行子任务可能在ui绘制进程结束后再执行,请参见图8-4,图8-4为本发明实施例提供的另一种应用程序初始化的示意图,其中,ct1~ct3依次为第一个待执行子任务至第三个待执行子任务的执行时间,且

整个应用程序初始化的总时间为:

显而易见的是,使用本发明实施例提供的卡顿优化方法可以有效的改善应用程序初始化的卡顿情况。

在实际使用本发明实施例提供的卡顿优化方法时,每个待执行子任务错落分布在不同的绘制间隔时间中,且待执行子任务可能在ui绘制进程中执行,但某一待执行子任务的执行时间大于两帧图像之间的绘制间隔时间,请参见图8-5,图8-5为本发明实施例提供的另一种应用程序初始化的示意图,其中,et1~et3依次为第一个待执行子任务至第三个待执行子任务的执行时间,且

整个应用程序初始化的总时间为:

显而易见的是,需要注意的是,请参见图8-5,可以看出et3>t4,即执行第三个待执行子任务时,会影响第五帧图像在pt5的绘制,但是当et3并未持续影响多帧图像的绘制时,如et3仅影响少数帧图像的绘制,而在一定时间内,ui绘制的图像帧数满足人眼观看图像的极限,如任意一秒内都显示至少二十四帧图像,对于用户来说,就不会感受到卡顿。使用本发明实施例提供的卡顿优化方法可以有效的改善应用程序初始化的卡顿情况,需要注意的是,应用程序初始化仅是一个泛指概念,不应理解对本发明的限制;本发明实施例提供的卡顿优化方法还可以应用于应用程序的使用过程中,例如,使用通讯软件时,当用户发送文字到对端,用户终端的显示界面会发生变化,则需要进行ui绘制,以便切换终端的显示界面;而使用该通讯软件还需要执行一些待执行任务,在用户并未输入切换界面的指令,如发文字,切换应用界面等,而仅是显示当前帧图像时,即等待下一帧图像绘制时,可以执行该通讯软件的待执行任务,以避免影响下一帧图像的绘制,减少应用程序的卡顿,提高用户的使用体验。

结合上述的图8-1、图8-2、图8-3、图8-4和图8-5等五种情况,可以明显的看出,无论是本发明实施例提供的卡顿优化方法出现图8-2、图8-3、图8-4或图8-5示出的任一种情况,都可以提高整体帧率(单位时间内显示的图像帧数),改善现有技术的应用程序初始化的卡顿情况(图8-1)。

实际情况下,通常不可能完美拆分一个任务,使用本发明实施例提供的卡顿优化方法,还有一种可能的情况是:假设待执行任务是一个runnable(java中的任务,使用android中的handlerpost(runnable)方式就可以将它插入主线程的消息队列中执行),我们假设其在“run()”方法中依次调用了“fun1()~fun7()”这七个方法,我们根据前述方法测出每个待执行子任务平均耗时分别为:10ms,10ms,20ms,20ms,10ms,10ms,20ms。此时按照思路我们将待执行任务拆分为七个runnable,在每个runnable中只执行一个方法,并通过一个七次的循环调用“handlerpostdelay”(runnable,delaytime)(延时提交任务,任务提交到线程后会在delaytime后才开始执行)提交到主线程执行,其中delaytime根据实际情况可以调整,一般每个任务之间的时间间隔可以在50ms~200ms之间,这样做的目的是使任务的执行尽量分散,插在帧绘制任务之间。此处我们假设设置的任务间隔是100ms,那么这七个runnable将分别于0ms、100ms、200ms、300ms,400ms、500ms、600ms后执行。耗时10ms的任务由于能在两帧绘制的间隔中完成,因此完全没有导致丢帧;而耗时20ms的任务由于超过了16.7ms的帧绘制间隔,会导致一帧的丢帧;但是,相对于一个100ms的明显画面卡顿,使用本发明实施例提供的卡顿优化方法,用户几乎无法感知到卡顿。在对一个应用所有的主线程初始化任务均采用本发明实施例提供的卡顿优化方法后,应用程序启动时间中的几秒内,丢帧大量减少,且分布较为分散,对比于未经优化的情况,用户感觉到的流畅度大大提升。

需要注意的是,对于ui绘制进程的绘制间隔时间获取,该绘制间隔时间除了与应用程序预设的绘制时间有关,还与终端的cpu占用、内存占用情况等有关;当使用该应用程序还需要网络时,该绘制间隔时间可能还与终端的网络条件有关;当使用该应用程序还需要通过有线连接与其它终端建立连接时,可能还与有线连接的线缆或接口的传输速率有关;应理解,绘制间隔时间的获取与多种因素有关,绘制间隔时间根据具体情况的不同可能会有不同,上述的图8-1~图8-1仅为实施例提出的可能情况,不应理解为对本发明的限制。

为了实现上述任一项的卡顿优化方法,本发明实施例提供一种卡顿优化装置,请参见图9,图9为本发明实施例提供的一种卡顿优化装置的方框示意图。卡顿优化装置40上设置有应用程序,卡顿优化装置40包括:获取模块41和处理模块42。

获取模块41用于获取应用程序的初始化任务。初始化任务包括启动应用程序时的界面绘制进程和待执行任务。

获取模块41还用于获取界面绘制进程的绘制间隔时间。绘制间隔时间为执行界面绘制进程中的等待时间。

处理模块42用于当执行界面绘制进程时,将待执行任务分配至绘制间隔时间中执行。

在可选的实施方式中,处理模块42还用于将待执行任务拆分为多个待执行子任务。待执行子任务的执行时间小于或等于绘制间隔时间。处理模块42还用于将至少一个待执行子任务分配至绘制间隔时间中执行。

在可选的实施方式中,界面绘制进程包括多帧图像的绘制,获取模块41还用于获取相邻的任意两帧图像的绘制间隔时间。绘制间隔时间为图像的预设绘制时间与实际绘制时间的差值。

在可选的实施方式中,待执行子任务具有序列标识,处理模块42还用于根据序列标识和绘制间隔时间,获取每个待执行子任务的时延信息。处理模块42还用于根据时延信息,依次执行每个待执行子任务。

在可选的实施方式中,处理模块42还用于判断第一待执行子任务的执行时间是否小于或等于第一绘制间隔时间。第一待执行子任务为多个待执行子任务中的任意一个,第一绘制间隔时间为执行界面绘制进程时,绘制任一帧图像后的等待时间。处理模块42还用于若执行时间小于或等于第一绘制间隔时间时,将第一待执行子任务分配至第一绘制间隔时间执行。处理模块42还用于若执行时间大于第一绘制间隔时间时,将第一待执行子任务分配在执行完成界面绘制进程之后执行。

应理解,获取模块41和处理模块42可以协同实现上述的s31~s33以及其可能的子步骤。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

综上所述,本发明提出一种卡顿优化方法、装置、终端和计算机可读存储介质,涉及终端的数据处理领域。该卡顿优化方法应用于终端,终端上设置有应用程序,该卡顿优化方法包括:获取应用程序的初始化任务;初始化任务包括启动应用程序时的界面绘制进程和待执行任务;获取界面绘制进程的绘制间隔时间;绘制间隔时间为执行界面绘制进程中的等待时间;当执行界面绘制进程时,将待执行任务分配至绘制间隔时间中执行。启动终端的应用程序时,将待执行任务放在界面绘制进程中的等待时间中进行,相较于现有技术在界面绘制进程完成之后,再执行待执行任务,可以明显的改善用户界面的卡顿情况,提高用户的使用体验。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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