CN109992347B - 界面显示方法、装置、终端及存储介质 - Google Patents

界面显示方法、装置、终端及存储介质 Download PDF

Info

Publication number
CN109992347B
CN109992347B CN201910285679.6A CN201910285679A CN109992347B CN 109992347 B CN109992347 B CN 109992347B CN 201910285679 A CN201910285679 A CN 201910285679A CN 109992347 B CN109992347 B CN 109992347B
Authority
CN
China
Prior art keywords
buffer
buffer mechanism
layer
user interface
state
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910285679.6A
Other languages
English (en)
Other versions
CN109992347A (zh
Inventor
彭德良
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong Oppo Mobile Telecommunications Corp Ltd
Original Assignee
Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guangdong Oppo Mobile Telecommunications Corp Ltd filed Critical Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority to CN201910285679.6A priority Critical patent/CN109992347B/zh
Publication of CN109992347A publication Critical patent/CN109992347A/zh
Application granted granted Critical
Publication of CN109992347B publication Critical patent/CN109992347B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • User Interface Of Digital Computer (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

本申请公开了一种界面显示方法、装置、终端及存储介质,属于终端技术领域。所述方法包括:根据第一缓冲机制显示用户界面,所述第一缓冲机制下,每个图层对应n个缓冲区;若n个缓冲区符合预设缓冲区状态,则将第一缓冲机制调整为第二缓冲机制,第二缓冲机制下,每个图层对应m个缓冲区,m>n;根据第二缓冲机制显示用户界面。本申请实施例中,由于第二缓冲机制下每个图层对应的缓冲区数量大于第一缓冲机制下每个图层对应的缓冲区数量,因此在第二缓冲机制下显示用户界面能够降低出现丢帧的概率,从而达到了提高画面显示稳定性的效果。

Description

界面显示方法、装置、终端及存储介质
技术领域
本申请实施例涉及终端技术领域,特别涉及一种界面显示方法、装置、终端及存储介质。
背景技术
三重缓冲(Triple buffer)是一种用于提高终端画面显示质量的图像显示机制。
开启三重缓冲后,应用的每个图层都对应三个缓冲区,其中,显示屏使用一个缓冲区进行图像显示,应用和合成线程则使用剩余的两个缓冲区进行图层绘制以及图层合成。
发明内容
本申请实施例提供了一种界面显示方法、装置、终端及存储介质,可以用于解决相关技术中终端显示画面存在丢帧的问题,所述技术方案如下:
一方面,本申请实施例提供了一种界面显示方法,所述方法包括:
根据第一缓冲机制显示用户界面,所述第一缓冲机制下,每个图层对应n个缓冲区;
若所述n个缓冲区符合预设缓冲区状态,则将所述第一缓冲机制调整为第二缓冲机制,所述第二缓冲机制下,每个图层对应m个缓冲区,m>n;
根据所述第二缓冲机制显示所述用户界面。
另一方面,本申请实施例提供了一种界面显示装置,所述装置包括:
第一显示模块,用于根据第一缓冲机制显示用户界面,所述第一缓冲机制下,每个图层对应n个缓冲区;
第一调整模块,用于当所述n个缓冲区符合预设缓冲区状态时,将所述第一缓冲机制调整为第二缓冲机制,所述第二缓冲机制下,每个图层对应m个缓冲区,m>n;
第二显示模块,用于根据所述第二缓冲机制显示所述用户界面。
另一方面,提供了一种终端,所述终端包括处理器、与所述处理器相连的存储器,以及存储在所述存储器上的程序指令,所述处理器执行所述程序指令时实现如上述方面所述的界面显示方法。
另一方面,提供了一种计算机可读存储介质,其上存储有程序指令,所述程序指令被处理器执行时实现如上述方面所述的界面显示方法。
本申请实施例提供的技术方案带来的有益效果至少包括:
本申请实施例中,根据第一缓冲机制显示用户界面时,若图层对应的缓冲区符合预设缓冲区状态,则将第一缓冲机制调整为第二缓冲机制,并在第二缓冲机制下显示用户界面;由于第二缓冲机制下每个图层对应的缓冲区数量大于第一缓冲机制下每个图层对应的缓冲区数量,因此在第二缓冲机制下显示用户界面能够降低出现丢帧的概率,从而达到了提高画面显示稳定性的效果。
附图说明
图1是本申请一个示例性实施例所提供的终端的结构示意图;
图2是图形显示过程的原理示意图;
图3是缓冲区四种状态的状态转换图;
图4示出了本申请一个示例性实施例提供的界面显示方法的方法流程图;
图5示出了本申请另一个示例性实施例提供的界面显示方法的方法流程图;
图6是第一缓冲机制下空闲缓冲区数量变化情况的示意图;
图7是第二缓冲机制下空闲缓冲区数量变化情况的示意图;
图8是本申请一个实施例提供的界面显示装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。在本申请的描述中,需要说明的是,除非另有明确的规定和限定,术语“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。此外,在本申请的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
在对本申请实施例进行解释说明之前,首先对本申请实施例的应用场景进行说明。图1示出了本申请一个示例性实施例所提供的终端的结构示意图。
该终端100是安装有目标应用程序的电子设备。该目标应用程序可以是系统程序或者第三方应用程序。其中,第三方应用程序是除了用户和操作系统之外的第三方制作的应用程序。比如,该目标应用程序可以是游戏应用程序或视频播放应用程序。
可选的,该终端100中包括:处理器120和存储器140。
处理器120可以包括一个或者多个处理核心。处理器120利用各种接口和线路连接整个终端100内的各个部分,通过运行或执行存储在存储器140内的指令、程序、代码集或指令集,以及调用存储在存储器140内的数据,执行终端100的各种功能和处理数据。可选的,处理器120可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器120可集成中央处理器(CentralProcessing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器120中,单独通过一块芯片进行实现。
存储器140可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。可选的,该存储器140包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器140可用于存储指令、程序、代码、代码集或指令集。存储器140可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等;存储数据区可存储下面各个方法实施例中涉及到的数据等。
本申请实施例中的终端120还包括显示屏160。可选的,显示屏160是触摸显示屏,用于接收用户使用手指、触摸笔等任何适合的物体在其上或附近的触摸操作,以及显示各个应用程序的用户界面。显示屏160通常设置在终端100的前面板,或者,同时设置在终端100的前面板和后面板。显示屏160可被设计成为全面屏、曲面屏或异型屏。显示屏160还可被设计成为全面屏与曲面屏的结合,异型屏与曲面屏的结合,本实施例对此不加以限定。
除此之外,本领域技术人员可以理解,上述附图所示出的终端100的结构并不构成对终端100的限定,终端可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。比如,终端100中还包括射频电路、输入单元、传感器、音频电路、无线保真(Wireless Fidelity,WiFi)模块、电源、蓝牙模块等部件,在此不再赘述。
为了便于理解,下面首先对终端中的图形显示系统进行说明,且下述实施例以安卓(Android)图形显示系统为例进行示意性说明。
如图2所示,显示屏21中显示的内容是从硬件帧缓冲区中读取,且读取的过程为:从硬件帧缓冲区的起始地址开始,按照从上往下,从左往右的顺序进行扫描,从而将扫描到的内容映射在显示屏上。
由于显示屏21中显示的内容需要不断更新,因此终端采用双重缓冲机制进行图像更新,其中,双缓冲区中的一个缓冲区用于内容读取显示,而另一个缓冲区用于后台图层合成和写入。
示意性的,如图2所示,前缓冲区22为显示屏所要显示内容的帧缓冲区,后缓冲区23为用于合成下一帧图形的帧缓冲区。当前一帧显示完毕,后一帧写入完毕时,显示屏21即读取后缓冲区23中的内容,相应的,前缓冲区22中即进行下一帧图形的合成(前后缓冲区角色互换)。
SurfaceFlinger作为图形的合成者,用于对上层传递的多个图层(surface)进行合成(主要由SurfaceFlinger中的合成线程负责图层合成),并提交到显示屏的硬件缓冲区中,供显示屏21读取显示。如图2所示,后缓冲区23中的内容由SurfaceFlinger对多个surface 24合成而成。其中,每个surface对应上层的一个窗口(window),比如对话框、状态栏、活动(Activity)。
图形的传递以缓冲区(buffer)为载体,而surface则是对buffer的进一步封装。为了实现对surface中多个buffer的管理,如图3所示,surface内部提供了缓冲区队列(BufferQueue),与应用程序和SurfaceFlinger形成生产者消费者模型。其中,应用程序为生产者(Producer),SurfaceFlinger为消费者(Consumer)。
对于BufferQueue中的各个buffer,其包含空闲状态(Free)、出列状态(Dequeued)、入列状态(Queued)状态以及获取状态(Acquired)。其中,空闲状态下,buffer可以被应用程序使用,以便应用程序在buffer中进行图层绘制;出列状态下,buffer正在被应用程序使用;入列状态下,buffer经过应用程序使用(图层绘制完成),等待被SurfaceFlinger合成;获取状态下,SurfaceFlinger正在根据buffer进行图层合成,合成完成并提交显示屏显示后,buffer重新恢复为空闲状态。不同状态之间可以通过缓冲区出列(dequeueBuffer)和缓冲区入列(queueBuffer)操作进行转换,其转换过程如图3所示。
双重缓冲机制下,当SurfaceFlinger合成速度较慢时,由于无处于空闲状态的buffer可供应用程序使用,因此画面显示会出现丢帧的情况。为了进一步提高画面显示的稳定性,终端可以采用三重缓冲机制进行图像更新,即在双重缓冲机制的基础上额外增加一个缓冲区,以便在SurfaceFlinger未及时合成的情况下,应用程序可以利用该缓冲区进行图层绘制。
然而,即便在使用三重缓冲机制的情况下,当应用程序绘制图层速度较快,而SurfaceFlinger合成图层速度过慢时,缓冲区均处于入列状态和获取状态,导致应用程序无法利用处于空闲状态的缓冲区进行图层绘制,进而导致画面出现丢帧(应用程序无法将图层绘制到缓冲区,导致后续无法根据缓冲区进行图层合成)。为了解决上述技术中存在的问题,本申请实施例通过引入动态缓冲区机制,在缓冲区符合预设缓冲区状态时(空闲状态的缓冲区不足时),自动调整缓冲机制,增加缓冲区的数量,使得应用程序在图层合成较慢的情况下,也能够在空闲状态的缓冲区中绘制图层,降低出现丢帧的概率,提高画面显示的稳定性。下面采用示意性的实施例进行说明。
请参考图4,其示出了本申请一个示例性实施例提供的界面显示方法的方法流程图。本实施例以该方法用于图1所示的终端为例进行说明,该方法可以包括如下步骤。
步骤401,根据第一缓冲机制显示用户界面,第一缓冲机制下,每个图层对应n个缓冲区。
其中,该用户界面由合成线程根据多个应用程序对应的图层进行合成后得到,该应用程序可以包括系统应用程序和前台应用程序。比如,系统应用程序可以包括通知栏应用程序(用于绘制通知栏图层)、虚拟按键栏图层(用于绘制虚拟按键栏图层)、侧边栏应用程序(用于绘制侧边栏图层)等等;前台应用程序可以包括购物应用程序、游戏应用程序、电子书应用程序、视频播放应用程序、社交应用程序或新闻阅读应用程序等等,本申请对此不做限定。
可选的,n为大于等于2的整数,即第一缓冲机制可以为双重缓冲机制或三重缓冲机制。
步骤402,若n个缓冲区符合预设缓冲区状态,则将第一缓冲机制调整为第二缓冲机制,第二缓冲机制下,每个图层对应m个缓冲区,m>n。
在一种可能的实施方式中,终端在接收到应用程序发送的缓冲区出列请求(dequeue)时,检测n个缓冲区是否符合预设缓冲区状态,和/或,终端每隔预定时间间隔检测当前时刻之前预定时间段内,n个缓冲区是否符合预设缓冲区状态。其中,预设缓冲区状态下,图层的合成速度低于应用程序的图层绘制速度,导致不存在处于空闲状态的缓冲区,或,处于空闲状态的缓冲区不足(即将耗尽)。
为了避免出现因无空闲状态的缓冲区可用,导致画面出现丢帧的情况,当n个缓冲区符合预设缓冲区状态时,终端通过增加分配给图层的缓冲区的数量,将第一缓冲机制调整为第二缓冲机制,其中,调整为第二缓冲机制后,图层对应的缓冲区数量增加了m-n。
在一个示意性的例子中,第一缓冲机制下,每个图层对应3个缓冲区,而在第二缓冲机制下,每个图层对应4个缓冲区。
步骤403,根据第二缓冲机制显示用户界面。
进一步的,终端根据第二缓冲机制显示用户界面。由于第二缓冲机制下图层的缓冲区数量得到增加,因此,应用程序能够dequeue到处于空闲状态的缓冲区进行图层绘制,并将绘制好的缓冲区入列(queue)到缓冲区队列中,等待合成线程依次对缓冲队列中的缓冲区进行合并。
可选的,根据第二缓冲机制显示用户界面后,终端检测m个缓冲区符合预设缓冲区状态,若符合,终端则进一步调整缓冲机制(增加缓冲区数量),直至达到缓冲区数量上限;若不符合,则保持第二缓冲机制。
为了避免缓冲区长时间占用过多内存造成的影响,可选的,当第二缓冲机制的启用时长达到时长阈值时,终端重新根据第一缓冲机制显示用户界面。
综上所述,本申请实施例中,根据第一缓冲机制显示用户界面时,若图层对应的缓冲区符合预设缓冲区状态,则将第一缓冲机制调整为第二缓冲机制,并在第二缓冲机制下显示用户界面;由于第二缓冲机制下每个图层对应的缓冲区数量大于第一缓冲机制下每个图层对应的缓冲区数量,因此在第二缓冲机制下显示用户界面能够降低出现丢帧的概率,从而达到了提高画面显示稳定性的效果。
由于增加的缓冲区会占用终端内存,因此为了避免长时间增加内存占用,在一种可能的实施方式中,启用第二缓冲机制后,当检测到处于空闲状态的缓冲区数量富余时,终端重新启用第一缓冲机制。下面采用示意性的实施例进行说明。
请参考图5,其示出了本申请另一个示例性实施例提供的界面显示方法的方法流程图。本实施例以该方法用于图1所示的终端为例进行说明,该方法可以包括如下步骤。
步骤501,根据第一缓冲机制显示用户界面,第一缓冲机制下,每个图层对应n个缓冲区。
本步骤的实施方式可以参考上述步骤401,本实施例在此不在赘述。
本实施例中,终端可以通过下述步骤502和503(基于缓冲区的实时状态),或,通过步骤504和505(基于一段时间内缓冲区状态的变化情况)调整缓冲机制。
步骤502,当接收到应用程序的缓冲区出列请求时,获取n个缓冲区的缓冲区状态,缓冲区状态包括空闲状态、入列状态和获取状态。
当接收到应用程序的缓冲区出列请求时,终端需要为应用程序分配一块处于空闲状态的缓冲区,供应用程序进行图层绘制。若无法为应用程序分配缓冲区,将会导致该图层无法绘制,进而引起丢帧。因此本实施中,终端在接收到缓冲区出列请求时,实时获取各个缓冲区的缓冲区状态,从而根据缓冲区状态确定是否出现空闲缓冲区耗尽的情况(即符合预设缓冲区状态)。
可选的,若n个缓冲区中不包含处于空闲状态的缓冲区,终端确定n个缓冲区符合预设缓冲区状态,并执行步骤503,;若n个缓冲区中包含处于空闲状态的缓冲区,终端确定n个缓冲区不符合预设缓冲区状态,保持第一缓冲机制,并将空闲状态的缓冲区分配给应用程序的进行图层绘制。
在一个示意性的例子中,当第一缓冲机制为三重缓冲机制时,终端获取到缓冲区A的缓冲区状态为获取状态(用于显示屏显示图像),缓冲区B的缓冲区状态为获取状态(合成线程根据缓冲区B进行图层合成),而缓冲区C的缓冲区状态为入列状态(等待合成线程进行图层合成)。
步骤503,若n个缓冲区中不包含处于空闲状态的缓冲区,则确定n个缓冲区符合预设缓冲区状态,并将第一缓冲机制调整为第二缓冲机制。
当不包含处于空闲状态的缓冲区时,为了避免应用程序无法绘制当前图层,终端调整缓冲机制,增加为图层分配的缓冲区数量。
结合上述步骤502中的示例,由于三个缓冲区均未处于空闲状态,因此终端增加一个缓冲区D,并将缓冲区D分配给应用程序进行图层绘制,以此避免丢帧的情况。
步骤504,获取预定时长内处于空闲状态的缓冲区的第一数量变化情况。
不同于上述步骤502和503进行实时检测,终端还可以根据一段时间内,缓冲区的状态变化情况,对缓冲区是否即将耗尽进行预测,从而根据预测结果,预先调整缓冲机制。
在一种可能的实施方式中,终端获取当前时刻之前预定时长内n个缓冲区的状态变化情况,并根据处该状态变化情况统计生成空闲状态下缓冲区的第一数量变化情况。其中,该预定时长可以为1s或500ms,本实施例对此不做限定。
在一个示意性的例子中,第一缓冲机制为三缓冲机制,终端获取到预定时长内处于空闲状态的缓冲区的第一数量变化情况如图6所示。该第一数量变化情况中,空闲缓冲区的数量呈现出“1→0”的周期性变化。
步骤505,若第一数量变化情况中第一数量的出现次数大于第一次数阈值,则确定n个缓冲区符合预设缓冲区状态,并将第一缓冲机制调整为第二缓冲机制,第一数量为0。
在一种可能的实施方式中,终端检测第一数量变化情况中第一数量的出现次数是否大于第一次数阈值,若大于,则确定空闲状态的缓冲区存在耗尽的风险(只要合成线程的合成速度下降,就会出现无空闲缓冲区的情况),并调整缓冲机制;若小于,则确定空闲状态的缓冲区富余,并继续使用第一缓存机制。
可选的,该第一数量为0,即空闲状态的缓冲区的数量在预定时长内多次达到0时,第一缓冲机制下存在应用程序无法请求到空闲缓冲区,从而引起丢帧的情况。
可选的,第一次数阈值/总次数≥第一比例阈值,其中,总次数为预定时长内统计缓冲区状态的总次数。比如第一比例阈值为0.4。
示意性的,如图6所示,预定时长内统计缓冲区状态的总次数为10次,且其中出现空闲缓冲区数量为0的次数为5次,大于第一次数阈值(4次),因此终端确定第一缓冲机制下出现丢帧的概率较高,从而增加缓冲区的数量。
步骤506,根据系统性能优化策略优化系统性能,系统性能优化策略包括上调GPU的工作频率和/或上调GPU的开启核心数。
可选的,为了进一步提高图层合成的速度,从而提高合成线程释放缓冲区的速度,终端调整缓冲机制的同时,可以对系统资源进行优化,比如提高图形处理器(GraphicsProcessing Unit,GPU)的工作频率,或增加GPU的开启核心数等等,本实施例对此不做限定。
在一个示意性的例子中,终端将GPU的工作频率为1000MHz提升至1500MHz。
步骤507,根据第二缓冲机制显示用户界面。
本步骤的实施方式可以参考上述步骤403,本实施例在此不再赘述。
步骤508,获取预定时长内处于空闲状态的缓冲区的第二数量变化情况。
当需要合成的图层数量较多或复杂度较高时,合成线程会出现合成速度较慢的问题,这种情况通常集中发生在某些特定的运行场景,且持续时间较短,而在其他运行场景下,合成线程能够快速合成图层,并及时释放缓冲区。
为了避免在缓冲区富余的情况下,仍旧根据第二缓冲机制显示用户界面,造成内存资源过度占用的问题,在一种可能的实施方式中,终端在启用第二缓冲机制后,获取当前时刻之前预定时长内m个缓冲区的状态变化情况,并根据处该状态变化情况统计生成空闲状态下缓冲区的第二数量变化情况。其中,该预定时长可以为1s或500ms,本实施例对此不做限定。
在一个示意性的例子中,第二缓冲机制下,每个图层对应的四个缓冲区,终端获取到预定时长内处于空闲状态的缓冲区的第二数量变化情况如图7所示。该第二数量变化情况中,空闲缓冲区的数量呈现出“3→2”的周期性变化。
步骤509,若第一数量变化情况中第二数量的出现次数大于第二次数阈值,则确定n个缓冲区不符合预设缓冲区状态,并将第二缓冲机制调整为第一缓冲机制,第二数量为m-n+1。
在一种可能的实施方式中,终端检测第二数量变化情况中第二数量的出现次数是否大于第二次数阈值,若大于,则确定空闲状态的缓冲区富余,并重新调整至第一缓冲机制;若小于,则继续使用第二缓存机制。
可选的,该第二数量为m-n+1。由于第二数量为m-n+1,因此即便将缓冲区的数量由m减少至n(缓冲区减少量为m-n),空闲状态的缓冲区数量仍旧大于等于1,从而确保应用程序能够请求到空闲的缓冲区进行图层绘制。
可选的,第二次数阈值/总次数≥第一比例阈值,其中,总次数为预定时长内统计缓冲区状态的总次数。比如,第二比例阈值为0.4。
示意性的,如图7所示,启用第二缓冲机制后,预定时长内统计缓冲区状态的总次数为10次,且其中出现空闲缓冲区数量为2的次数为5次,大于第二次数阈值(4次),因此终端确定第二缓冲机制下缓冲区存在富余,从而恢复第一缓冲机制。
步骤510,根据第一缓冲机制显示用户界面。
相应的,终端重新根据第一缓冲机制显示用户界面。本步骤的实施方式可以参考步骤501,本实施例在此不再赘述。
需要说明的是,终端可以继续通过步骤502至505确定是否需要调整缓冲机制,本实施例在此不再赘述。
本实施例中,终端基于缓冲区的实时状态,或,基于一段时间内缓冲区状态的变化情况,确定是否需要调整缓冲机制,确保应用程序能够请求到空闲状态的缓冲区,避免出现丢帧的情况。
另外,本实施例中,终端在启用第二缓冲机制后,基于一段时间内缓冲区状态的变化情况,确定缓冲区是否存在富余,并在确定缓冲区存在富余时,重新启用第一缓冲机制,从而避免多余的缓冲区占用内存。
在一种可能的实施方式中,当用户界面中包含目标应用程序的应用界面时,终端操作系统可以通过与目标应用程序之间的数据通道获取目标应用程序当前所处的运行场景,并在当前所处的运行场景为目标运行场景时,调整缓冲机制,从而保证目标运行场景下,目标应用程序画面的稳定性。
可选的,根据第一缓冲机制显示用户界面后,终端获取目标应用程序的当前运行场景,若当前运行场景为目标运行场景,则将第一缓冲机制调整为第二缓冲机制,其中,目标运行场景下的图层合成耗时大于其他运行场景下的图层合成耗时,且不同应用程序对应不同的目标运行场景。
可选的,目标应用程序与终端操作系统之间建立粘合(binder)连接,从而通过binder连接向终端操作系统发送当前运行场景的场景标识;或者,目标应用程序与终端操作系统之间建立套接字(socket)连接,从而通过socket连接向终端操作系统发送当前运行场景的场景标识;或者,目标应用程序内嵌有操作系统开发商提供的软件开发工具包(Software Development Kit,SDK),通过调用该SDK中的应用程序编程接口(ApplicationProgramming Interface,API),目标应用程序即可向终端操作系统发送当前运行场景的场景标识。本申请实施例并不对获取目标应用程序所处运行场景的方式进行限定。
为了进一步降低增加缓冲区时占用的内存,可选的,若当前运行场景为目标运行场景,终端确定目标应用程序对应的目标图层,并将目标图层对应的第一缓冲机制调整为第二缓冲机制,即为目标图层增加缓冲区,而其他应用程序对应的图层则维持缓冲区数量。
本实施例中,终端根据目标应用程序所处的运行场景,动态调整缓冲机制,保证目标应用程序在各个运行场景下均能够稳定显示;并且,终端仅为目标应用程序对应的目标图层增加缓冲区数量,降低增加缓冲区时造成的内存占用量。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
请参考图8,其示出了本申请一个实施例提供的界面显示装置的结构示意图。该装置可以通过专用硬件电路,或者,软硬件的结合实现成为图1中的终端的全部或一部分,该装置包括:
第一显示模块810,用于根据第一缓冲机制显示用户界面,所述第一缓冲机制下,每个图层对应n个缓冲区;
第一调整模块820,用于当所述n个缓冲区符合预设缓冲区状态时,将所述第一缓冲机制调整为第二缓冲机制,所述第二缓冲机制下,每个图层对应m个缓冲区,m>n;
第二显示模块830,用于根据所述第二缓冲机制显示所述用户界面。
可选的,所述第一调整模块810,包括:
第一获取单元,用于当接收到应用程序的缓冲区出列请求时,获取所述n个缓冲区的缓冲区状态,所述缓冲区状态包括空闲状态、入列状态和获取状态;
第一调整单元,用于若所述n个缓冲区中不包含处于所述空闲状态的缓冲区,则确定所述n个缓冲区符合所述预设缓冲区状态,并将所述第一缓冲机制调整为所述第二缓冲机制。
可选的,所述第一调整模块810,包括:
第二获取单元,用于获取预定时长内处于空闲状态的缓冲区的第一数量变化情况;
第二调整单元,用于若所述第一数量变化情况中第一数量的出现次数大于第一次数阈值,则确定所述n个缓冲区符合所述预设缓冲区状态,并将所述第一缓冲机制调整为所述第二缓冲机制,所述第一数量为0。
可选的,所述装置还包括:
第一获取模块,用于获取预定时长内处于空闲状态的缓冲区的第二数量变化情况;
第二调整模块,用于若所述第一数量变化情况中第二数量的出现次数大于第二次数阈值,则确定所述n个缓冲区不符合所述预设缓冲区状态,并将所述第二缓冲机制调整为所述第一缓冲机制,所述第二数量为m-n+1;
第三显示模块,用于根据所述第一缓冲机制显示所述用户界面。
可选的,所述装置还包括:
优化模块,用于根据系统性能优化策略优化系统性能,所述系统性能优化策略包括上调图形处理器GPU的工作频率和/或上调GPU的开启核心数。
可选的,所述用户界面中包括目标应用程序的应用界面;
所述装置还包括:
第二获取模块,用于获取所述目标应用程序的当前运行场景;
第二调整模块,用于若所述当前运行场景为目标运行场景,则将所述第一缓冲机制调整为所述第二缓冲机制,所述目标运行场景下的图层合成耗时大于其他运行场景下的图层合成耗时。
可选的,所述第二调整模块830,包括:
图层确定单元,用于若所述当前运行场景为所述目标运行场景,则确定所述目标应用程序对应的目标图层;
第三调整单元,用于将所述目标图层对应的所述第一缓冲机制调整为所述第二缓冲机制。
综上所述,本申请实施例中,根据第一缓冲机制显示用户界面时,若图层对应的缓冲区符合预设缓冲区状态,则将第一缓冲机制调整为第二缓冲机制,并在第二缓冲机制下显示用户界面;由于第二缓冲机制下每个图层对应的缓冲区数量大于第一缓冲机制下每个图层对应的缓冲区数量,因此在第二缓冲机制下显示用户界面能够降低出现丢帧的概率,从而达到了提高画面显示稳定性的效果。
本实施例中,终端基于缓冲区的实时状态,或,基于一段时间内缓冲区状态的变化情况,确定是否需要调整缓冲机制,确保应用程序能够请求到空闲状态的缓冲区,避免出现丢帧的情况。
另外,本实施例中,终端在启用第二缓冲机制后,基于一段时间内缓冲区状态的变化情况,确定缓冲区是否存在富余,并在确定缓冲区存在富余时,重新启用第一缓冲机制,从而避免多余的缓冲区占用内存。
此外,终端根据目标应用程序所处的运行场景,动态调整缓冲机制,保证目标应用程序在各个运行场景下均能够稳定显示;并且,终端仅为目标应用程序对应的目标图层增加缓冲区数量,降低增加缓冲区时造成的内存占用量。
需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本申请还提供一种计算机可读介质,其上存储有程序指令,程序指令被处理器执行时实现上述各个方法实施例提供的界面显示方法。
本申请还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各个实施例所述的界面显示方法。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的帧率控制方法中全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.一种界面显示方法,其特征在于,所述方法包括:
根据第一缓冲机制显示用户界面,所述第一缓冲机制下,每个图层对应n个缓冲区,n为大于等于2的整数;
若所述n个缓冲区符合预设缓冲区状态,则将所述第一缓冲机制调整为第二缓冲机制,所述第二缓冲机制下,每个图层对应m个缓冲区,m>n,其中,所述预设缓冲区状态下,图层的合成速度低于图层的绘制速度;
根据所述第二缓冲机制显示所述用户界面。
2.根据权利要求1所述的方法,其特征在于,所述若所述n个缓冲区符合预设缓冲区状态,则将所述第一缓冲机制调整为第二缓冲机制,包括:
当接收到应用程序的缓冲区出列请求时,获取所述n个缓冲区的缓冲区状态,所述缓冲区状态包括空闲状态、入列状态和获取状态;
若所述n个缓冲区中不包含处于所述空闲状态的缓冲区,则确定所述n个缓冲区符合所述预设缓冲区状态,并将所述第一缓冲机制调整为所述第二缓冲机制。
3.根据权利要求1所述的方法,其特征在于,所述若所述n个缓冲区符合预设缓冲区状态,则将所述第一缓冲机制调整为第二缓冲机制,包括:
获取预定时长内处于空闲状态的缓冲区的第一数量变化情况;
若所述第一数量变化情况中第一数量的出现次数大于第一次数阈值,则确定所述n个缓冲区符合所述预设缓冲区状态,并将所述第一缓冲机制调整为所述第二缓冲机制,所述第一数量为0。
4.根据权利要求1至3任一所述的方法,其特征在于,所述根据所述第二缓冲机制显示所述用户界面之后,所述方法还包括:
获取预定时长内处于空闲状态的缓冲区的第二数量变化情况;
若所述第二数量变化情况中第二数量的出现次数大于第二次数阈值,则确定所述n个缓冲区不符合所述预设缓冲区状态,并将所述第二缓冲机制调整为所述第一缓冲机制,所述第二数量为m-n+1;
根据所述第一缓冲机制显示所述用户界面。
5.根据权利要求1至3任一所述的方法,其特征在于,所述将所述第一缓冲机制调整为第二缓冲机制之后,所述方法还包括:
根据系统性能优化策略优化系统性能,所述系统性能优化策略包括上调图形处理器GPU的工作频率和/或上调GPU的开启核心数。
6.根据权利要求1至3任一所述的方法,其特征在于,所述用户界面中包括目标应用程序的应用界面;
所述根据第一缓冲机制显示用户界面之后,所述方法还包括:
获取所述目标应用程序的当前运行场景;
若所述当前运行场景为目标运行场景,则将所述第一缓冲机制调整为所述第二缓冲机制,所述目标运行场景下的图层合成耗时大于其他运行场景下的图层合成耗时。
7.根据权利要求6所述的方法,其特征在于,所述若所述当前运行场景为目标运行场景,则将所述第一缓冲机制调整为所述第二缓冲机制,包括:
若所述当前运行场景为所述目标运行场景,则确定所述目标应用程序对应的目标图层;
将所述目标图层对应的所述第一缓冲机制调整为所述第二缓冲机制。
8.一种界面显示装置,其特征在于,所述装置包括:
第一显示模块,用于根据第一缓冲机制显示用户界面,所述第一缓冲机制下,每个图层对应n个缓冲区,n为大于等于2的整数;
第一调整模块,用于当所述n个缓冲区符合预设缓冲区状态时,将所述第一缓冲机制调整为第二缓冲机制,所述第二缓冲机制下,每个图层对应m个缓冲区,m>n,其中,所述预设缓冲区状态下,图层的合成速度低于图层的绘制速度;
第二显示模块,用于根据所述第二缓冲机制显示所述用户界面。
9.一种终端,其特征在于,所述终端包括处理器、与所述处理器相连的存储器,以及存储在所述存储器上的程序指令,所述处理器执行所述程序指令时实现如权利要求1至7任一所述的界面显示方法。
10.一种计算机可读存储介质,其特征在于,其上存储有程序指令,所述程序指令被处理器执行时实现如权利要求1至7任一所述的界面显示方法。
CN201910285679.6A 2019-04-10 2019-04-10 界面显示方法、装置、终端及存储介质 Active CN109992347B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910285679.6A CN109992347B (zh) 2019-04-10 2019-04-10 界面显示方法、装置、终端及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910285679.6A CN109992347B (zh) 2019-04-10 2019-04-10 界面显示方法、装置、终端及存储介质

Publications (2)

Publication Number Publication Date
CN109992347A CN109992347A (zh) 2019-07-09
CN109992347B true CN109992347B (zh) 2022-03-25

Family

ID=67133098

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910285679.6A Active CN109992347B (zh) 2019-04-10 2019-04-10 界面显示方法、装置、终端及存储介质

Country Status (1)

Country Link
CN (1) CN109992347B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110363831B (zh) * 2019-07-17 2023-04-07 Oppo广东移动通信有限公司 图层合成方法、装置、电子设备及存储介质
CN110502294B (zh) * 2019-07-20 2021-08-20 华为技术有限公司 数据处理的方法、装置及电子设备
CN110517184A (zh) * 2019-07-25 2019-11-29 武汉蓝星科技股份有限公司 一种基于屏幕分层的图形显示方法及装置
CN111291203B (zh) * 2020-02-06 2024-03-12 广州酷狗计算机科技有限公司 数据显示方法、装置、终端及存储介质
CN115631258B (zh) * 2020-07-31 2023-10-20 荣耀终端有限公司 一种图像处理方法及电子设备
CN116048833B (zh) * 2022-08-31 2023-10-20 荣耀终端有限公司 一种线程处理方法、终端设备及芯片系统
CN117687727A (zh) * 2023-07-11 2024-03-12 荣耀终端有限公司 增加缓存的方法及相关产品

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017070869A1 (zh) * 2015-10-28 2017-05-04 华为技术有限公司 一种内存配置方法、装置及系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9276832B2 (en) * 2011-03-20 2016-03-01 King Abdullah University Of Science And Technology Buffer sizing for multi-hop networks
US9961585B2 (en) * 2014-05-16 2018-05-01 Nokia Solutions And Networks Oy Network-side buffer management
CA3010471C (en) * 2017-07-06 2024-04-23 Aidan Fabius Display buffering methods and systems

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017070869A1 (zh) * 2015-10-28 2017-05-04 华为技术有限公司 一种内存配置方法、装置及系统

Also Published As

Publication number Publication date
CN109992347A (zh) 2019-07-09

Similar Documents

Publication Publication Date Title
CN109992347B (zh) 界面显示方法、装置、终端及存储介质
CN110377257B (zh) 图层合成方法、装置、电子设备及存储介质
EP3754490B1 (en) User interface rendering method and apparatus, and terminal
CN110018759B (zh) 界面显示方法、装置、终端及存储介质
CN110209501B (zh) 图形处理器的频率调整方法、装置、终端及存储介质
CN110489228B (zh) 一种资源调度的方法和电子设备
CN109992232B (zh) 图像更新方法、装置、终端及存储介质
CN110018874B (zh) 垂直同步方法、装置、终端及存储介质
US20220139353A1 (en) Display method, electronic device, and non-transitory computer-readable storage medium
CN106919401B (zh) 一种动态调节分辨率的方法、装置及移动终端
KR101952922B1 (ko) 중간-분류 아키텍처에서 프레임 대 프레임 일관성의 활용
CN109800141B (zh) Gpu性能瓶颈的确定方法、装置、终端及存储介质
CN110362186B (zh) 图层处理方法、装置、电子设备及计算机可读介质
CN108646906B (zh) 帧率调整方法、装置、存储介质及智能终端
CN110377263B (zh) 图像合成方法、装置、电子设备及存储介质
CN111737019B (zh) 一种显存资源的调度方法、装置及计算机存储介质
CN107770618B (zh) 一种图像处理方法、装置及存储介质
EP4002281A1 (en) Layer composition method and apparatus, electronic device, and storage medium
US9591358B2 (en) Media playback workload scheduler
WO2021008427A1 (zh) 图像合成方法、装置、电子设备及存储介质
US10484690B2 (en) Adaptive batch encoding for slow motion video recording
CN111124668A (zh) 内存释放方法、装置、存储介质及终端
US10685630B2 (en) Just-in time system bandwidth changes
CN113064728B (zh) 高负载应用图像显示方法、终端及可读存储介质
CN118159341A (zh) 一种图像帧的渲染方法及相关装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant