一种生成界面图像的方法及电子设备与流程

文档序号:37361403发布日期:2024-03-22 10:15阅读:11来源:国知局
一种生成界面图像的方法及电子设备与流程

本技术涉及终端,尤其涉及一种生成界面图像的方法及电子设备。


背景技术:

1、电子设备的显示画面由一帧一帧的界面图像组成,每个界面图像通常包括至少一个图层。电子设备的系统和应用准备好各个图层的资源,生成各个图层,并经过渲染、合成后,就可以在屏幕上显示一帧一帧的界面图像。在生成图层过程中,需要为各个图层分别申请内存,用于生成图层的相关处理。在图层变化较大的场景,有一定概率会出现申请内存时间较长,导致准备界面图像时长较长的问题。如果电子设备刷新屏幕时有的界面图像未准备好,就会产生显示画面丢帧的问题。


技术实现思路

1、本技术实施例提供一种生成界面图像的方法及电子设备,可以解决生成界面图像的图层时间过长的问题,降低电子设备显示画面丢帧的概率。

2、为达到上述目的,本技术的实施例采用如下技术方案:

3、第一方面,提供了一种生成界面图像的方法,应用于电子设备,电子设备上安装有第一应用,所述电子设备的操作系统包括表面合成服务和合成渲染组件,该方法包括:表面合成服务获取第一应用的第一界面图像的第一图层的属性信息;比如,属性信息可以包括图层宽度、图层高度和界面图像的像素信息中至少一项。表面合成服务在第一时刻根据第一图层的属性信息申请第一缓存;表面合成服务在第二时刻(接收到第一垂直同步vsync信号的时刻)将第一缓存绑定至第一图层对应的缓冲队列;表面合成服务根据第一界面图像包含的全部图层对应的缓冲队列生成全部图层;合成渲染组件对全部图层进行渲染与合成,生成第一界面图像。

4、其中,第一时刻早于第二时刻。由于在第一时刻提前根据第一图层的属性信息申请了第一图层对应的缓存(buffercache)。在表面合成服务(surfaceflinger服务)接收到第一vsync信号生成第一图层时,直接将提前申请好的buffercache绑定至第一图层对应的缓冲队列(bufferqueue),然后就可以根据第一图层的图形数据向buffercache填充图层内容。不需要在生成第一图层时实时申请buffer。由于第一图层的buffercache是提前申请好的,在生成第一图层时仅做buffercache与bufferqueue的绑定,然后向buffercache中填充内容;绘制第一图层的时长不受申请内存时长的影响,避免了下一个vsync信号(第二vsync信号)到来时第一界面图像未准备好的问题。

5、结合第一方面,在一种实施方式中,表面合成服务根据第一图层的属性信息申请第一缓存包括:表面合成服务根据第一图层的属性信息确定第一值,第一值为第一缓存占据的空间大小;表面合成服务根据第一值申请第一缓存。

6、图层对应的缓存占据的空间大小是根据图层的属性信息确定,表面合成服务需要获取到图层的属性信息之后才能申请图层buffer。

7、结合第一方面,在一种实施方式中,该方法还包括:在第三时刻,电子设备的屏幕上显示第一界面图像;第三时刻为第二vsync信号下发的时刻,第二vsync信号为第一vsync信号的下一个vsync信号。

8、也就是说,第一vsync信号下发时开始生成图层,第二vsync信号下发前需要准备好界面图像,这样就可以在第二vsync信号下发时显示界面图像,避免出现丢帧现象。

9、结合第一方面,在一种实施方式中,第一时刻为第一界面图像对应的activity被创建或启动的时刻。

10、第一应用冷启动过程中,当检测到第一应用的应用界面对应的activity的oncreate事件或onstart事件时,申请应用界面图层、状态栏图层、导航栏图层、壁纸图层等各个图层对应的buffercache。surfaceflinger服务接收到vsync信号生成图层时,只需要将提前申请好的各个buffercache分别绑定至对应的bufferqueue,不需要在生成图层时实时申请内存。申请内存耗费的时长不会影响生成界面图像的速度。这样就避免了下一个vsync信号到来时界面图像还未准备好的问题,降低了电子设备显示画面丢帧的几率。

11、在一种实现方式中,第一图层为应用界面图层,表面合成服务从第一应用的进程获取第一图层的属性信息。

12、在另一种实现方式中,第一图层为状态栏图层、导航栏图层或壁纸图层,表面合成服务从操作系统的进程获取第一图层的属性信息。

13、其中,在一些实现方式中,当检测到第一应用的应用界面对应的activity的oncreate事件或onstart事件时,第一应用将应用界面图层的属性信息发送给表面合成服务。在一些实现方式中,表面合成服务通过学习获取第一应用的应用界面图层的属性信息。

14、结合第一方面,在一种实施方式中,第一时刻为检测到横屏切换竖屏事件、竖屏切换横屏事件、折叠屏展开事件或折叠屏折叠事件的时刻。

15、应用运行过程中,当电子设备发生横竖屏切换、或者电子设备的折叠屏展开或折叠时,surfaceflinger服务申请发生变化的图层(第一图层)对应的buffercache。surfaceflinger服务接收到vsync信号生成图层时,只需要将提前申请好的各个图层的buffercache分别绑定至对应的bufferqueue,不需要在生成图层时实时申请内存。申请内存耗费的时长不会影响生成界面图像的速度。这样就避免了下一个vsync信号到来时界面图像还未准备好的问题,降低了电子设备显示画面丢帧的几率。

16、在一些实施方式中,第一时刻为检测到横屏切换竖屏事件的时刻,第一图层为应用界面图层,表面合成服务根据电子设备竖屏状态下应用界面图层的属性信息申请第一缓存。

17、在一些实施方式中,第一时刻为检测到竖屏切换横屏事件的时刻,第一图层为应用界面图层,表面合成服务根据电子设备横屏状态下应用界面图层的属性信息申请第一缓存。

18、在一些实施方式中,第一时刻为检测到折叠屏展开事件的时刻,第一图层包括状态栏图层、导航栏图层和壁纸图层中至少一项,表面合成服务根据电子设备的折叠屏展开状态下第一图层的属性信息申请第一缓存。

19、在一些实施方式中,第一时刻为检测到折叠屏折叠事件的时刻,第一图层包括状态栏图层、导航栏图层和壁纸图层中至少一项,表面合成服务根据电子设备的折叠屏折叠状态下第一图层的属性信息申请第一缓存。

20、第二方面,提供了一种电子设备,该电子设备具有实现上述第一方面所述生成界面图像的方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。

21、第三方面,提供了一种电子设备,包括:处理器、存储器和显示屏;该存储器用于存储计算机执行指令,当该电子设备运行时,该处理器执行该存储器存储的该计算机执行指令,以使该电子设备执行如上述第一方面中任一项所述的方法。

22、第四方面,提供了一种电子设备,包括:处理器;所述处理器用于与存储器耦合,并读取存储器中的指令之后,根据所述指令执行如上述第一方面中任一项所述的方法。

23、第五方面,提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机可以执行上述第一方面中任一项所述的方法。

24、第六方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机可以执行上述第一方面中任一项所述的方法。

25、第七方面,提供了一种装置(例如,该装置可以是芯片系统),该装置包括处理器,用于支持电子设备实现上述第一方面中所涉及的功能。在一种可能的设计中,该装置还包括存储器,该存储器,用于保存电子设备必要的程序指令和数据。该装置是芯片系统时,可以由芯片构成,也可以包含芯片和其他分立器件。

26、其中,第二方面至第七方面中任一种设计方式所带来的技术效果可参见第一方面中不同设计方式所带来的技术效果,此处不再赘述。

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