掌桥专利:专业的专利平台
掌桥专利
首页

一种显示刷新控制方法、终端及计算机可读存储介质

文献发布时间:2023-06-19 10:29:05


一种显示刷新控制方法、终端及计算机可读存储介质

技术领域

本发明涉及通信技术领域,更具体地说,涉及一种显示刷新控制方法、终端及计算机可读存储介质。

背景技术

显示屏的刷新率可以体现显示屏显示的流畅性,不过显示屏的刷新率并不是决定显示流畅性效果的因素,因为不同的应用具有不同的上帧频率,即不同应用提供帧画面内容的频率不同。当一个应用的上帧节拍与显示屏的刷新节拍不一致的情况下,即便显示屏具有较高刷新率,但其显示效果还是会因为这种不合拍大打折扣。

发明内容

本发明要解决的技术问题在于:应用上帧节拍与显示屏的刷新节拍不一致带来的显示刷新延迟严重影响显示屏显示效果,针对该技术问题,提供一种显示刷新控制方法、终端及计算机可读存储介质。

为解决上述技术问题,本发明提供一种显示刷新控制方法,该显示刷新控制方法包括:

监测缓存刷新队列中的缓存数据;

当确定缓存刷新队列中存在待显示刷新的缓存数据时,采用显示屏刷新信号以外的方式通知Surfaceflinger(界面绘制)服务;

控制Surfaceflinger服务从缓存刷新队列中提取缓存数据进行显示界面绘制。

可选的,采用显示屏刷新信号以外的方式通知Surfaceflinger服务包括:

在显示屏下一个刷新信号到达前采用刷新信号以外的方式通知Surfaceflinger服务。

可选的,采用显示屏刷新信号以外的方式通知Surfaceflinger服务包括:

当确定缓存刷新队列中存在待显示刷新的缓存数据时,立即采用显示屏刷新信号以外的方式通知Surfaceflinger服务。

可选的,显示刷新控制方法还包括:

确定前台应用的上帧时刻与关联刷新信号到达时刻之间的时间差异,关联刷新信号为上帧时刻之后的第一个刷新信号;

根据时间差异对显示屏的刷新信号进行调整。

可选的,确定前台应用的上帧时刻与关联刷新信号到达时刻之间的时间差异包括:

统计前台应用多个上帧时刻与对应关联刷新信号的到达时刻;

分别确定统计出的各上帧时刻与对应关联刷新信号到达时刻之间的时间差;

计算各时间差的均值作为时间差异。

可选的,根据时间差异对显示屏的刷新信号进行调整之前,还包括:

确定前台应用的上帧频率与显示屏的刷新率相同,显示屏的刷新率为刷新信号的到达频率。

可选的,显示刷新控制方法还包括:

若前台应用的上帧频率与显示屏的刷新率不同,且前台应用的上帧频率小于等于显示屏最大刷新率,则对显示屏的刷新率进行调整,直至显示屏的刷新率与前台应用的上帧频率相同。

可选的,刷新信号包括Vsync(垂直同步)信号;根据时间差异对显示屏的刷新信号进行调整包括:

按照时间差异将显示屏的刷新信号到达时刻提前,使上帧时刻与对应关联刷新时刻达到时刻同步。

进一步地,本发明还提供了一种终端,该终端包括处理器、存储器及通信总线;

通信总线用于实现处理器和存储器之间的连接通信;

处理器用于执行存储器中存储的一个或者多个程序,以实现上述任一项的显示刷新控制方法的步骤。

进一步地,本发明还提供了一种计算机可读存储介质,该计算机可读存储介质存储有一个或者多个程序,一个或者多个程序可被一个或者多个处理器执行,以实现上述任一项的显示刷新控制方法的步骤。

有益效果

本发明实施例提供一种显示刷新控制方法、终端及计算机可读存储介质,针对显示屏刷新节拍与应用上帧节拍不一致影响显示效果的问题,本发明实施例提供了一种显示刷新控制方案,在该方案中,终端可以监测缓存刷新队列中的缓存数据,当确定缓存刷新队列中存在待显示刷新的缓存数据时,采用显示屏刷新信号以外的方式通知Surfaceflinger服务,并控制Surfaceflinger服务从缓存刷新队列中提取缓存数据进行显示界面绘制。相较于相关技术中Surfaceflinger服务只能根据与刷新信号决定显示屏刷新节拍的情况,在本发明实施例中,因为终端可以直接对缓存刷新队列中的缓存数据进行监测,当根据监测结果确定前台应用有上帧时,可以在不依赖于刷新信号的情况下通知终端内的Surfaceflinger服务,进而使得Surfaceflinger服务可以不用再等待刷新信号到达后再从前台应用的缓存刷新队列中提取缓存数据,而是可以在接收到通知后立即从缓存刷新队列中提取缓存数据实现显示界面绘制。在这种情况下,保证显示屏的刷新节拍跟随前台应用的上帧节拍,避免了前台应用上帧时刻与刷新信号到达时刻之间的延迟等待,提升了显示屏的显示效果。

附图说明

下面将结合附图及实施例对本发明作进一步说明,附图中:

图1为实现本发明各个实施例一个可选的移动终端的硬件结构示意图。

图2为如图1所示的移动终端的无线通信系统示意图;

图3为本发明第一实施例中提供的上帧与刷新的一种示意图;

图4为本发明第一实施例中提供的上帧频率与刷新信号频率不同的一种示意图;

图5为本发明第一实施例中提供的显示刷新控制方法的一种流程图;

图6为本发明第一实施例中提供的终端调整刷新信号的一种流程图;

图7为本发明第一实施例中提供的上帧频率与刷新信号频率相同但上帧节拍与刷新节拍不一致的一种示意图;

图8为本发明第一实施例中提供的终端确定时间差异的一种流程图;

图9为本发明第二实施例中提供的显示刷新控制方法的一种流程图;

图10为本发明第二实施例中提供的终端调整刷新信号的一种流程图;

图11为本发明第三实施例提供的终端的一种硬件结构示意图。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。

终端可以以各种形式来实施。例如,本发明中描述的终端可以包括诸如手机、平板电脑、笔记本电脑、掌上电脑、个人数字助理(Personal Digital Assistant,PDA)、便捷式媒体播放器(Portable Media Player,PMP)、导航装置、可穿戴设备、智能手环、计步器等移动终端,以及诸如数字TV、台式计算机等固定终端。

后续描述中将以移动终端为例进行说明,本领域技术人员将理解的是,除了特别用于移动目的的元件之外,根据本发明的实施方式的构造也能够应用于固定类型的终端。

请参阅图1,其为实现本发明各个实施例的一种移动终端的硬件结构示意图,该移动终端100可以包括:RF(Radio Frequency,射频)单元101、WiFi模块102、音频输出单元103、A/V(音频/视频)输入单元104、传感器105、显示单元106、用户输入单元107、接口单元108、存储器109、处理器110、以及电源111等部件。本领域技术人员可以理解,图1中示出的移动终端结构并不构成对移动终端的限定,移动终端可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

下面结合图1对移动终端的各个部件进行具体的介绍:

射频单元101可用于收发信息或通话过程中,信号的接收和发送,具体的,将基站的下行信息接收后,给处理器110处理;另外,将上行的数据发送给基站。通常,射频单元101包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器、双工器等。此外,射频单元101还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global System of Mobile communication,全球移动通讯系统)、GPRS(General Packet Radio Service,通用分组无线服务)、CDMA2000(CodeDivision Multiple Access 2000,码分多址2000)、WCDMA(Wideband Code DivisionMultiple Access,宽带码分多址)、TD-SCDMA(Time Division-Synchronous CodeDivision Multiple Access,时分同步码分多址)、FDD-LTE(Frequency DivisionDuplexing-Long Term Evolution,频分双工长期演进)和TDD-LTE(Time DivisionDuplexing-Long Term Evolution,分时双工长期演进)等。

WiFi属于短距离无线传输技术,移动终端通过WiFi模块102可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图1示出了WiFi模块102,但是可以理解的是,其并不属于移动终端的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。

音频输出单元103可以在移动终端100处于呼叫信号接收模式、通话模式、记录模式、语音识别模式、广播接收模式等等模式下时,将射频单元101或WiFi模块102接收的或者在存储器109中存储的音频数据转换成音频信号并且输出为声音。而且,音频输出单元103还可以提供与移动终端100执行的特定功能相关的音频输出(例如,呼叫信号接收声音、消息接收声音等等)。音频输出单元103可以包括扬声器、蜂鸣器等等。

A/V输入单元104用于接收音频或视频信号。A/V输入单元104可以包括图形处理器(Graphics Processing Unit,GPU)1041和麦克风1042,图形处理器1041对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。处理后的图像帧可以显示在显示单元106上。经图形处理器1041处理后的图像帧可以存储在存储器109(或其它存储介质)中或者经由射频单元101或WiFi模块102进行发送。麦克风1042可以在电话通话模式、记录模式、语音识别模式等等运行模式中经由麦克风1042接收声音(音频数据),并且能够将这样的声音处理为音频数据。处理后的音频(语音)数据可以在电话通话模式的情况下转换为可经由射频单元101发送到移动通信基站的格式输出。麦克风1042可以实施各种类型的噪声消除(或抑制)算法以消除(或抑制)在接收和发送音频信号的过程中产生的噪声或者干扰。

移动终端100还包括至少一种传感器105,比如光传感器、运动传感器以及其他传感器。具体地,光传感器包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板1061的亮度,接近传感器可在移动终端100移动到耳边时,关闭显示面板1061和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的指纹传感器、压力传感器、虹膜传感器、分子传感器、陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。

显示单元106用于显示由用户输入的信息或提供给用户的信息。显示单元106可包括显示面板1061,可以采用液晶显示器(Liquid Crystal Display,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板1061。

用户输入单元107可用于接收输入的数字或字符信息,以及产生与移动终端的用户设置以及功能控制有关的键信号输入。具体地,用户输入单元107可包括触控面板1071以及其他输入设备1072。触控面板1071,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板1071上或在触控面板1071附近的操作),并根据预先设定的程式驱动相应的连接装置。触控面板1071可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器110,并能接收处理器110发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板1071。除了触控面板1071,用户输入单元107还可以包括其他输入设备1072。具体地,其他输入设备1072可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种,具体此处不做限定。

进一步的,触控面板1071可覆盖显示面板1061,当触控面板1071检测到在其上或附近的触摸操作后,传送给处理器110以确定触摸事件的类型,随后处理器110根据触摸事件的类型在显示面板1061上提供相应的视觉输出。虽然在图1中,触控面板1071与显示面板1061是作为两个独立的部件来实现移动终端的输入和输出功能,但是在某些实施例中,可以将触控面板1071与显示面板1061集成而实现移动终端的输入和输出功能,具体此处不做限定。

接口单元108用作至少一个外部装置与移动终端100连接可以通过的接口。例如,外部装置可以包括有线或无线头戴式耳机端口、外部电源(或电池充电器)端口、有线或无线数据端口、存储卡端口、用于连接具有识别模块的装置的端口、音频输入/输出(I/O)端口、视频I/O端口、耳机端口等等。接口单元108可以用于接收来自外部装置的输入(例如,数据信息、电力等等)并且将接收到的输入传输到移动终端100内的一个或多个元件或者可以用于在移动终端100和外部装置之间传输数据。

存储器109可用于存储软件程序以及各种数据。存储器109可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器109可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

处理器110是移动终端的控制中心,利用各种接口和线路连接整个移动终端的各个部分,通过运行或执行存储在存储器109内的软件程序和/或模块,以及调用存储在存储器109内的数据,执行移动终端的各种功能和处理数据,从而对移动终端进行整体监控。处理器110可包括一个或多个处理单元;优选的,处理器110可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器110中。

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

尽管图1未示出,移动终端100还可以包括蓝牙模块等,在此不再赘述。

为了便于理解本发明实施例,下面对本发明的移动终端所基于的通信网络系统进行描述。

请参阅图2,图2为本发明实施例提供的一种通信网络系统架构图,该通信网络系统为通用移动通信技术的LTE系统,该LTE系统包括依次通讯连接的UE(User Equipment,用户设备)201,E-UTRAN(Evolved UMTS Terrestrial Radio Access Network,演进式UMTS陆地无线接入网)202,EPC(Evolved Packet Core,演进式分组核心网)203和运营商的IP业务204。

具体地,UE201可以是上述终端100,此处不再赘述。

E-UTRAN202包括eNodeB2021和其它eNodeB2022等。其中,eNodeB2021可以通过回程(backhaul)(例如X2接口)与其它eNodeB2022连接,eNodeB2021连接到EPC203,eNodeB2021可以提供UE201到EPC203的接入。

EPC203可以包括MME(Mobility Management Entity,移动性管理实体)2031,HSS(Home Subscriber Server,归属用户服务器)2032,其它MME2033,SGW(Serving Gate Way,服务网关)2034,PGW(PDN Gate Way,分组数据网络网关)2035和PCRF(Policy andCharging Rules Function,政策和资费功能实体)2036等。其中,MME2031是处理UE201和EPC203之间信令的控制节点,提供承载和连接管理。HSS2032用于提供一些寄存器来管理诸如归属位置寄存器(图中未示)之类的功能,并且保存有一些有关服务特征、数据速率等用户专用的信息。所有用户数据都可以通过SGW2034进行发送,PGW2035可以提供UE 201的IP地址分配以及其它功能,PCRF2036是业务数据流和IP承载资源的策略与计费控制策略决策点,它为策略与计费执行功能单元(图中未示)选择及提供可用的策略和计费控制决策。

IP业务204可以包括因特网、内联网、IMS(IP Multimedia Subsystem,IP多媒体子系统)或其它IP业务等。

虽然上述以LTE系统为例进行了介绍,但本领域技术人员应当知晓,本发明不仅仅适用于LTE系统,也可以适用于其他无线通信系统,例如GSM、CDMA2000、WCDMA、TD-SCDMA以及未来新的网络系统等,此处不做限定。

基于上述移动终端硬件结构以及通信网络系统,提出本发明方法各个实施例。

第一实施例

当一个前台应用存在新的显示内容需要绘制到显示屏上时,其可以将这些显示内容对应的数据缓存到缓存刷新队列中,请结合图3所示,前台应用31将显示内容对应的缓存数据(buffer)存储到缓存刷新队列32中,终端的Surfaceflinger服务33可以从缓存刷新队列32中提取缓存数据进行界面绘制。

在显示领域中,将前台应用31向缓存刷新队列32中存放缓存数据的过程称为前台应用31的“上帧”,上帧可以被简单理解为前台应用31向缓存刷新队列32提供待显示帧画面数据的过程。通常情况下,前台应用31的上帧过程是周期性进行的,例如,在一些示例中,应用的上帧频率为60Hz,这意味着该应用每秒会上帧60次。

在本实施例中,将Surfaceflinger服务33从缓存刷新队列32中提取缓存数据进行显示界面绘制的过程称为“刷新”,刷新也是周期性进行的,在相关技术中,Surfaceflinger服务33根据刷新信号的指示从缓存刷新队列32中提取缓存数据,所以,刷新信号的周期影响刷新周期,而刷新信号的频率即显示屏的刷新率。毫无疑义的是,高刷新率有机会提升终端显示的流畅性,例如相较于刷新率为60HZ的终端,刷新率为90HZ的终端的显示流程性会更好,因为60HZ的刷新率是指1s内刷60次,90HZ则是指1s内刷90次。

在前台应用32的上帧频率固定,显示屏的刷新率也不变的情况下,最理想的显示刷新方式是:前台应用31的上帧与Surfaceflinger服务33的刷新同步进行,这样上帧节拍与刷新节拍一致,上帧与刷新两个过程之间不存在延迟。但实际情况中,因为上帧频率与刷新频率的不同,或者上帧频率与刷新频率虽然相同但上帧时刻与刷新时刻不同,所以会出现前台应用31上帧完成,但因为刷新信号尚未到达进而使得缓存数据不能及时得到绘制的现象,例如,图4示出了上帧频率与刷新信号频率不同的一种示意图:

在图4当中,采用a表示上帧(a1,a2,a3…分别表示第1个上帧时刻,第2个上帧时刻,第3个上帧时刻……第n个上帧时刻),采用b表示刷新信号到达(b1,b2,b3…分别表示第1个刷新信号到达时刻,第2个刷新信号到达时刻,第3个刷新信号到达时刻……第n个刷新信号到达时刻)。因为上帧频率与刷新频率不同,因此,上帧周期与刷新信号的周期也不同,即便上帧时刻在某一时刻与刷新信号达到时刻重合,例如a2与b2,但因为二者周期的不同,所以,在更多的时刻中,上帧时刻与刷新信号到达时刻之间都存在时间差,存在显示刷新的延迟,对此,本实施例提供一种显示刷新控制方法,请参见图5示出的该方法的流程图:

S502:终端监测缓存刷新队列中的缓存数据。

在本实施例中,终端可以通过对缓存刷新队列中的缓存数据进行监测从而确定前台应用是否有开始上帧。可以理解的是,前台应用是指当前在终端前台运行的应用,是指其交互界面所属Activity(活动窗口)为激活状态,可与用户进行人机交互的应用。顾名思义可知缓存刷新队列是按照队列的方式管理其中存储的缓存数据的,遵循“先进先出,后进后出”的管理原则:先被前台应用放入的缓存数据将先被Surfaceflinger服务提取出。当缓存刷新队列中存在待显示刷新的缓存数据时,就意味着前台应用进行了上帧,因此,需要通知Surfaceflinger服务进行刷新;如果缓存刷新队列中不存在待显示刷新的缓存数据,则说明前台应用当前并未上帧。

S504:当确定缓存刷新队列中存在待显示刷新的缓存数据时,终端采用显示屏刷新信号以外的方式通知Surfaceflinger服务。

根据前述介绍可知,在相关技术中,Surfaceflinger服务对缓存刷新队列进行缓存数据读取实际上与缓存刷新队列中是否出现了待显示刷新的缓存数据无关,只是因为刷新信号到达了,所以,无论缓存刷新队列中是否有待显示刷新的缓存数据,Surfaceflinger服务都会根据刷新信号的指示“例行”地进行一次缓存数据读取。反过来,当前台应用在缓存刷新队列中进行上帧以后,Surfaceflinger服务也只能等待刷新信号到达以后才能去进行缓存数据的读取。不过,在本实施例中,为了实现对刷新过程与刷新信号的“解耦”,当终端确定缓存刷新队列中存在待显示刷新的缓存数据时,可以采用刷新信号以外的方式通知Surfaceflinger服务,让Surfaceflinger服务在没有刷新信号驱动的情况下也能知晓当前有了到缓存刷新队列中进行缓存数据读取的需要。

在本实施例的一些示例中,刷新信号是指Vsync(Vertical Synchronization,垂直同步)信号,显示屏的刷新过程是每一行从左到右(Horizontal Scanning,行刷新,又称水平刷新),从上到下(Vertical Scanning,屏幕刷新,又称垂直刷新)。当整个屏幕刷新完毕,即一个垂直刷新周期完成,会有短暂的空白期,Vsync信号便在此时发出。例如Android(安卓)系统每隔16ms发出Vsync信号,触发对UI进行渲染。可以简单的把Vsync信号认为是一种定时中断。可以理解的是,在本实施例的其他一些示例中,如果显示屏采用其他刷新方式进行刷新,则刷新信号也可以是其他类型的信号。

应当理解的是,当终端确定缓存刷新队列中存在待显示刷新的缓存数据时以显示屏刷新信号以外的方式通知Surfaceflinger服务,这主要是为了让Surfaceflinger服务在刷新信号到达之前就到缓存刷新队列中进行缓存数据提取,从而减少刷新与上帧两个过程之间的时延,因此,在本实施例的一些示例中,终端确定缓存刷新队列中存在待显示刷新的缓存数据后,应该在显示屏下一个刷新信号到达前就采用刷新信号以外的方式通知Surfaceflinger服务。在本实施例的一种示例中,确定缓存刷新队列中存在待显示刷新的缓存数据后,终端立即以刷新信号以外的方式通知Surfaceflinger服务。值得注意的是,这里所谓的“立即”,并不要求终端在多少时长(例如a毫秒)内通知Surfaceflinger服务,而是指终端在通知Surfaceflinger服务之前可以不用再针对是否通知做进一步判断。

S506:终端控制Surfaceflinger服务从缓存刷新队列中提取缓存数据进行显示界面绘制。

当终端通知Surfaceflinger服务以后,Surfaceflinger服务可以在终端的控制下到缓存刷新队列中提取待显示刷新的缓存数据,然后根据提取到的缓存数据进行显示界面绘制,实现显示内容的呈现。

在本实施例的一些示例中,为了让Surfaceflinger服务可以继续按照刷新信号进行刷新,同时又避免延迟问题,终端还可以按照图6示出的流程图对刷新信号进行调整,从而使得上帧节拍与刷新信号的到达节拍一致:

S602:终端确定前台应用的上帧时刻与关联刷新信号到达时刻之间的时间差异。

所谓“关联刷新信号”实际就是上帧时刻之后的第一个刷新信号,本领域技术人员可以理解的是,如果确定缓存刷新队列中存在待显示刷新的缓存数据后(即上帧时刻到达后),终端不采用刷新信号以外的方式通知Surfaceflinger服务,则Surfaceflinger服务需要等待上帧时刻以后的第一个刷新信号到达时,才能提取缓存刷新队列中的缓存数据,因此,一个上帧时刻之后的第一个刷新信号就是相关技术中显示屏指用于指示Surfaceflinger服务对该上帧时刻缓存到缓存刷新队列中的缓存数据进行绘制的刷新信号。

例如,请参见图7示出的一种前上帧节拍与刷新信号节拍不一致的示意图:图6中采用c表示上帧(c1,c2,c3…分别表示第1个上帧时刻,第2个上帧时刻,第3个上帧时刻……第n个上帧时刻),采用d表示刷新信号到达(d1,d2,d3…分别表示第1个刷新信号到达时刻,第2个刷新信号到达时刻,第3个刷新信号到达时刻……第n个刷新信号到达时刻)。在该示例中,前台应用的上帧频率与刷新信号的频率相同,但是,上帧时刻总是在刷新信号到达时刻之前,因此,前台应用在c1时刻上帧以后,需要等待一段才会有刷新信号到达,从图6中可以看出,第1个刷新信号到达时刻c1之后的第一个刷新信号在d1时刻到达,因此,按照相关技术中的做法,Surfaceflinger服务原本只能在d1时刻才能将c1时刻上帧的缓存数据进行显示刷新,所以,d1时刻到达的刷新信号就是c1这一上帧时刻的关联刷新信号。同样地,d1时刻到达的刷新信号就是c2这一上帧时刻的关联刷新信号……依次类推,这里不再赘述。

S604:终端根据时间差异对显示屏的刷新信号进行调整。

终端在确定上帧时刻与关联刷新信号到达时刻之间的时间差异之后,为了让刷新信号到达时刻可以“追赶”到上帧时刻,则可以将刷新信号进行提前。

在本实施例的一些示例中,终端可以基于统计确定上帧时刻与关联刷新信号到达时刻之间的时间差异,例如请参见图8示出的一种流程图:

S802:终端统计前台应用多个上帧时刻与对应关联刷新信号的到达时刻。

终端可以记录各历史上帧时刻以及各刷新信号到达时刻,并且根据时间顺序将各刷新信号同对应的上帧时刻关联起来(也即确定出各上帧时刻对应的关联刷新信号),从而确定出上帧时刻对应的关联刷新信号到达时刻。

在本实施例的一些示例中,终端并不需要记录前台应用所有的上帧时刻,可以仅记录距离当前时刻最近的几个上帧时刻,因为终端可以仅根据最近几个上帧时刻与对应关联刷新信号到达时刻确定时间差异,所以,和上帧时刻的记录一样,关联刷新信号到达时刻的记录也可以不用针对所有刷新信号,而是仅针对最近的几个关联刷新信号。例如,可以仅记录距离当前时刻最近的5个上帧时刻与关联刷新信号到达时刻,对于时间更远的上帧时刻及其关联刷新信号到达时刻,则可以将记录删除,这样可以减小终端存储的压力。

S804:终端分别确定统计出的各上帧时刻与对应关联刷新信号到达时刻之间的时间差。

终端可以确定记录的各上帧时刻同对应的关联刷新信号到达时刻之间的时间差,例如,继续以终端记录了5个上帧时刻为例,则终端可以计算出5个时间差。请继续结合图7示出的示意图:假定终端记录的5个上帧时刻分别是c2,c3,c4,c5以及c6,对应的关联刷新信号分别是d2,d3,d4,d5以及d6,终端将计算c2与d2之间的时间差△t2,c3与d3之间的时间差△t3……c6与d6之间的时间差△t6。

S806:终端计算各时间差的均值作为时间差异。

随后,终端计算各时间差之间的均值,然后将时间差的均值作为上帧时刻与关联刷新信号之间的时间差异。例如,在上述示例中,终端将计算(△t2+△t3+△t4+△t5+△t6)/5的结果,从而得到时间差异。

计算出时间差异之后,终端可以按照该时间差异对刷新信号的到达时刻进行调整,例如,假定该时间差异表征关联刷新信号到达时刻平均比对应的上帧时刻晚30ms,则终端可以控制将刷新信号的到达时刻提前30ms。

本领域技术人员可以理解的是,上述通过调整刷新信号到达时刻的方案仅适用于前台应用的上帧频率与显示屏的刷新率相同的情况,如果二者之间的频率不一致,则即便通过调整使得某一上帧时刻与其对应的关联刷新信号到达时刻重合,但二者在后续过程中的节拍还是不一致。所以,在本实施例的一些示例中,在终端根据上帧时刻与关联刷新信号到达时刻的时间差异调整刷新信号到达时刻之前,终端会先获取前台应用的上帧频率与显示屏当前的刷新率,并判断上帧频率与显示屏当前的刷新率是否相同,如果二者相同,则终端可以进行后续流程,例如终端先计算时间差异,然后根据时间差异调整刷新信号到达时刻。不过本领域技术人员可以理解的是,终端也可以在计算出时间差异之后再判断上帧频率与显示屏当前的刷新率是否一致,在这种情况下,如果终端确定前台应用的上帧频率与显示屏当前的刷新率相同,则其可以直接根据计算出的时间差异对刷新信号的到达时刻进行调整。

在本实施例的一些示例中,如果终端经过判断确定前台应用的上帧频率与显示屏当前的刷新率不同,则终端可以不对刷新信号的到达时刻进行调整,终端依旧采用图5示出的流程通知Surfaceflinger服务实现界面绘制。但在本实施例的另外一些示例中,当终端确定前台应用的上帧频率与显示屏当前的刷新率不同时,终端可以进一步确定前台应用当前的上帧频率是否超过了显示屏的最大刷新率,如果确定前台应用的上帧频率超过了显示屏的最大刷新率,则终端可以不再考虑对刷新信号的到达时刻进行调整,但如果确定前台应用的上帧频率没有超过显示屏的最大刷新率,则终端可以通过对显示屏所采用的刷新率进行调整从而使得显示屏的刷新率与前台应用的上帧频率达到一致。

本实施例中提供的显示刷新控制方法,可以通过刷新信号以外的方式监测上帧过程,并通知Surfaceflinger服务进行刷新,让Surfaceflinger服务的动作不再单一地依赖于刷新信号,这样,即便显示屏的刷新率与前台应用的上帧频率不一致,但也可以保证Surfaceflinger服务在前台应用上帧后,及时将需要显示刷新的内容绘制呈现给终端用户,增强了终端的显示效果,有利于提升用户交互体验。

另外,终端可以基于上帧时刻与关联刷新信号之间的时间差异对刷新信号的到达时刻进行调整,从而使得前台应用的上帧节拍与刷新信号节拍达到一致,进而可以在避免刷新延迟的基础上使得Surfaceflinger服务可以继续按照刷新信号的指示进行刷新,减少终端的监测通知负担。

第二实施例

为了使本领域技术人员能够对前述显示刷新控制方法的优点与细节更清楚,本实施例将结合示例继续对该方案进行介绍,请参见图9示出的一种流程图:

S902:监测缓存刷新队列中的缓存数据。

在本实施例中,终端可以采用周期性检测的方式对缓存刷新队列中的缓存数据进行监测,检测的周期可以根据终端处理器的性能以及用户对显示效果的要求确定。

S904:判断缓存刷新队列中是否存在待显示刷新的缓存数据。

若判断结果为是,则执行S906,否则继续执行S902。

S906:立即采用显示屏刷新信号以外的方式通知Surfaceflinger服务。

可以理解的是,如果缓存刷新队列中不为空,则说明当前存在待显示刷新的缓存数据,因此,终端可以采用刷新信号以外的途径通知Surfaceflinger服务,在本实施例的一些示例中,终端确定缓存刷新队列中存在待显示刷新的缓存数据后,可以不再进行其他判断,立即通知Surfaceflinger服务,以使Surfaceflinger服务及时了解前台应用的上帧事件。

S908:控制Surfaceflinger服务从缓存刷新队列中提取缓存数据进行显示界面绘制。

通知Surfaceflinger服务后,终端可以控制Surfaceflinger服务立即从缓存刷新队列中读取缓存数据,然后根据读取到的缓存数据进行界面绘制。

本实施例还提供一种终端在前台应用上帧节拍与刷新信号节拍不一致的情况下对刷新信号到达时间进行调整的方案,请结合图10示出的一种流程图:

S1002:获取显示屏当前的刷新率以及前台应用的上帧频率。

对于显示屏当前的刷新率,终端可以通过查询显示屏的设置参数确定。对于前台应用的上帧频率,终端也可以通过查询获得,例如终端可以通过查询前台应用的安装包,基于安装包中的数据确定该应用的上帧频率。在本实施例的另外一些示例中,终端也可以通过网络查询确定前台应用的上帧频率,例如,终端可以向前台应用对应的应用服务器查询该应用的上帧频率。还有一些示例中,对于显示屏当前的刷新率与前台应用的上帧频率,终端都可以基于自己的统计确定,例如,终端可以在一段时间内监测前台应用的上帧过程,从而计算出前台应用的上帧频率。对于显示屏的刷新率,则终端可以在一段时间内统计到达的刷新信号的数目,进而计算出该显示屏当前的刷新率。

S1004:判断显示屏当前的刷新率与前台应用的上帧频率是否一致。

若判断结果为是,则执行S1010,否则执行S1006。

S1006:判断前台应用的上帧频率是否超过显示屏的最大刷新率。

若判断结果为是,则结束流程,否则执行S1008。

S1008:调整显示屏采用的刷新率,直至其与前台应用的上帧频率一致。

如果前台应用的上帧频率没有超过显示屏的最大刷新率,则说明显示屏实际上也是可以支持以同前台应用上帧频率一致的刷新率进行工作的,因此终端可以考虑对显示屏所采用的刷新率进行调整,从而使得显示屏的刷新率与前台应用的上帧频率相同。

S1010:统计前台应用最近的多个上帧时刻与对应关联刷新信号的到达时刻。

在确定显示屏当前的刷新率与前台应用的上帧频率相同的情况下,终端可以进一步对刷新信号的到达时间进行调整,进而保证刷新信号的节拍与前台应用的上帧节拍保持一致。在本实施例中,为了确定该如何对刷新信号的到达时刻进行调整,终端需要确定上帧时刻与其对应的关联刷新信号到达时刻之间的时间差异。可选地,终端可以统计前台应用最近n个上帧时刻与对应关联刷新信号的到达时刻,其中,n的取值大于等于3。应当明白的是,n的取值越大,越能排除偶然异常情况带来的影响,终端计算出的时间差异也越准确。不过与此同时,终端需要统计更多的上帧时刻与对应的关联刷新信号到达时刻,终端的负担也更重。

S1012:分别确定统计出的各上帧时刻与对应关联刷新信号到达时刻之间的时间差。

统计到n个上帧时刻与n个关联刷新信号到达时刻后,终端可以分别确定这n个上帧时刻与对应关联刷新信号到达时刻之间的时间差,毫无疑义的是,本实施例中终端将计算出n个时间差。

S1014:计算各时间差的均值作为时间差异。

得到各时间差之后,终端可以计算各时间差的均值作为时间差异。在本实施例的一些示例中,终端可以直接计算前面n个时间差的均值。在另一些示例中,终端还可以将这n个时间差中明显异常的值剔除,然后计算剩下时间差的均值,这样可以进一步避免偶然因素的影响。

S1016:按照时间差异将显示屏的刷新信号到达时刻提前,使上帧时刻与对应关联刷新时刻达到时刻同步。

计算出前台应用上帧时刻与关联刷新信号到达时刻之间的时间差异后,终端可以按照该时间差异将刷新信号到达时刻提前,从而使得使上帧时刻与对应关联刷新信号达到时刻一致,实现上帧节拍与刷新信号节拍的同步。

本实施例提供的显示刷新控制方法,即便在刷新信号的节拍与前台应用上帧节拍不一致的情况下,也可以保证刷新节拍与上帧节拍的同步。而且,终端还可以通过对刷新信号进行调整,从而使得刷新信号的节拍与上帧节拍也到达一致,避免前台应用上帧后交互界面得不到及时显示刷新的问题,提升了显示效果的流畅性,增强了用户体验。

第三实施例

本实施例提供一种计算机可读存储介质,该计算机可读存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、计算机程序模块或其他数据)的任何方法或技术中实施的易失性或非易失性、可移除或不可移除的介质。计算机可读存储介质包括但不限于RAM(Random Access Memory,随机存取存储器),ROM(Read-Only Memory,只读存储器),EEPROM(Electrically Erasable Programmable read only memory,带电可擦可编程只读存储器)、闪存或其他存储器技术、CD-ROM(Compact Disc Read-Only Memory,光盘只读存储器),数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。

该计算机可读存储介质中可以存储有一个或多个可供一个或多个处理器读取、编译并执行的计算机程序,在本实施例中,该计算机可读存储介质可以存储有显示刷新控制程序,该显示刷新控制程序可供一个或多个处理器执行实现前述实施例介绍的任意一种显示刷新控制方法的流程。

本实施例还提供了一种计算机程序产品,包括计算机可读装置,该计算机可读装置上存储有如上所示的计算机程序。本实施例中该计算机可读装置可包括如上所示的计算机可读存储介质。例如,该计算机程序产品包括终端,例如手机、平板电脑、可穿戴设备等,如图11所示:

终端110包括处理器111、存储器112以及用于连接处理器111与存储器112的通信总线113,其中存储器12可以为前述存储有前述显示刷新控制程序的存储介质。处理器111可以读取显示刷新控制程序,进行编译并执行实现前述实施例中介绍的显示刷新控制方法的流程:

处理器111监测缓存刷新队列中的缓存数据。当确定缓存刷新队列中存在待显示刷新的缓存数据时,处理器111采用显示屏刷新信号以外的方式通知Surfaceflinger服务,并控制Surfaceflinger服务从缓存刷新队列中提取缓存数据进行显示界面绘制。

在本实施例的一些示例中,处理器111采用显示屏刷新信号以外的方式通知Surfaceflinger服务时,其可以在显示屏下一个刷新信号到达前采用刷新信号以外的方式通知Surfaceflinger服务。

在本实施例的一种示例中,处理器111采用显示屏刷新信号以外的方式通知Surfaceflinger服务时,其可以在确定缓存刷新队列中存在待显示刷新的缓存数据时,立即采用显示屏刷新信号以外的方式通知Surfaceflinger服务。

在本实施例的一些示例中,处理器111还会确定前台应用的上帧时刻与关联刷新信号到达时刻之间的时间差异,然后根据时间差异对显示屏的刷新信号进行调整。其中,关联刷新信号为上帧时刻之后的第一个刷新信号。

在一些示例中,处理器111确定前台应用的上帧时刻与关联刷新信号到达时刻之间的时间差异时,其可以先统计前台应用多个上帧时刻与对应关联刷新信号的到达时刻,然后分别确定统计出的各上帧时刻与对应关联刷新信号到达时刻之间的时间差,随后处理器111计算各时间差的均值作为时间差异。

在一些示例中,刷新信号包括Vsync信号。

可选地,处理器111根据时间差异对显示屏的刷新信号进行调整之前,还可以先确定前台应用的上帧频率与显示屏的刷新率相同,显示屏的刷新率为刷新信号的到达频率。

在本实施例的一些示例中,如果前台应用的上帧频率与显示屏的刷新率不同,且前台应用的上帧频率小于等于显示屏最大刷新率,则处理器111可以对显示屏的刷新率进行调整,直至显示屏的刷新率与前台应用的上帧频率相同。

可选地,处理器111根据时间差异对显示屏的刷新信号进行调整时,可以按照时间差异将显示屏的刷新信号到达时刻提前,使上帧时刻与对应关联刷新时刻达到时刻同步。

本实施例提供的终端及计算机可读存储介质,终端可以监测缓存刷新队列中的缓存数据,当确定缓存刷新队列中存在待显示刷新的缓存数据时,采用显示屏刷新信号以外的方式通知Surfaceflinger服务,并控制Surfaceflinger服务从缓存刷新队列中提取缓存数据进行显示界面绘制。Surfaceflinger服务可以不用再等待刷新信号到达后再从前台应用的缓存刷新队列中提取缓存数据,而是可以在接收到通知后立即从缓存刷新队列中提取缓存数据实现显示界面绘制。在这种情况下,保证显示屏的刷新节拍跟随前台应用的上帧节拍,避免了前台应用上帧时刻与刷新信号到达时刻之间的延迟等待,提升了显示屏的显示效果。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

相关技术
  • 一种显示刷新控制方法、终端及计算机可读存储介质
  • 屏幕刷新控制方法、移动终端及计算机可读存储介质
技术分类

06120112568743