CN118092728A - 一种渲染方法及电子设备 - Google Patents

一种渲染方法及电子设备 Download PDF

Info

Publication number
CN118092728A
CN118092728A CN202410416817.0A CN202410416817A CN118092728A CN 118092728 A CN118092728 A CN 118092728A CN 202410416817 A CN202410416817 A CN 202410416817A CN 118092728 A CN118092728 A CN 118092728A
Authority
CN
China
Prior art keywords
application
interface
rendering
map
electronic device
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.)
Pending
Application number
CN202410416817.0A
Other languages
English (en)
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.)
Honor Device Co Ltd
Original Assignee
Honor Device Co 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 Honor Device Co Ltd filed Critical Honor Device Co Ltd
Priority to CN202410416817.0A priority Critical patent/CN118092728A/zh
Publication of CN118092728A publication Critical patent/CN118092728A/zh
Pending legal-status Critical Current

Links

Landscapes

  • User Interface Of Digital Computer (AREA)

Abstract

一种渲染方法及电子设备,涉及图像处理技术领域。电子设备显示包括第一应用的应用信息的第一界面。电子设备检测到在第一界面中触发电子设备显示第一动效的目标事件,第一动效的画面内容包括第一应用的应用画面。响应于目标事件结束,在第一时间区间,电子设备不渲染第一应用的应用画面,基于第一图像渲染第一动效,第一图像包括第一应用结束在前台运行时的截图或者目标事件结束时第一应用的应用画面。响应于第一动效结束或第一时间区间的时间长度达到第一时长,电子设备渲染第一应用的应用画面。这样,电子设备可以在显示动效的过程中,不渲染第一应用的应用画面,提高动效的流畅性。

Description

一种渲染方法及电子设备
技术领域
本申请实施例涉及图像处理技术领域,尤其涉及一种渲染方法及电子设备。
背景技术
在电子设备执行动效(如在启动应用的过程中执行的动效)时,电子设备同时渲染动效画面和应用的应用画面。
如果应用的应用画面较复杂,电子设备渲染应用画面的耗时会比较长,动效画面等待渲染的时间较长,可能导致动效出现卡顿现象。
发明内容
本申请实施例提供一种渲染方法及电子设备,电子设备在显示动效的过程中,暂停渲染应用的应用画面,可以提高动效的流畅性。
第一方面,本申请实施例提供一种渲染方法,该渲染方法应用于电子设备。
渲染方法包括:电子设备显示第一界面,第一界面包括电子设备中第一应用的应用信息。电子设备检测到在第一界面中的用于触发电子设备显示第一动效的目标事件,其中,第一动效的画面内容包括第一应用的应用画面。
响应于目标事件结束,在第一时间区间内,电子设备不渲染第一应用的应用画面,然后,电子设备基于第一图像渲染第一动效,其中,第一图像包括第一应用结束在电子设备的前台运行时的截图或者目标事件结束时第一应用的应用画面。
其中,目标事件可以包括从电子设备中第一界面的底部向上滑动的操作事件、在多任务界面针对第一界面的点击事件、在电子设备主界面针对第一应用的应用图标的点击事件等;第一动效可以包括向上滑动的动效,从多任务界面启动第一应用的动效、从电子设备主界面启动第一应用的动效、从第一界面进入多任务界面的动效等。
以目标事件为从电子设备中第一界面的底部向上滑动的操作事件,第一动效为进入多任务界面的动效,以第一应用为地图应用为例,如图2中,界面201到界面202展示的从地图应用进入多任务界面的动效过程中,进入多任务界面的动效的画面内容包括:地图应用的缩略界面2011中的应用画面内容,以及地图应用的缩略界面2011中的应用画面内容逐渐缩小以及方法发生变化的动效。
例如,目标事件为在多任务界面针对第一界面的点击事件,第一动效为启动应用的动效,第一应用为地图应用,在如图16中电子设备显示启动地图应用的动效过程中,电子设备是基于地图应用的截图(如图16中界面1501中地图应用的缩略界面15011中所示的截图)渲染的启动地图应用的动效,其中,上述地图应用的截图为地图应用结束在电子设备的前台运行时的截图。
这样,电子设备可以在显示第一动效的过程中,在第一应用的显示区域内显示第一应用的第一图像,而不会因为不渲染第一应用的应用画面,造成第一应用的显示区域(如图16中界面1501中地图应用的缩略界面15011)空白的问题。
响应于第一动效结束,或者第一时间区间的时间长度达到第一时长,电子设备渲染第一应用的应用画面。其中,第一时长为电子设备对第一应用执行渲染管控操作的时长(即不渲染第一应用的时长)。示例性的,第一动效为进入多任务界面的动效时,第一动效可以设置为进入多任务界面的动效的执行时长。例如,进入多任务界面的动效的执行时长为600ms,对应第一动效为600ms,电子设备不渲染第一应用的应用画面的第一时间区间的时长达到600ms时,电子设备可以渲染第一应用的应用画面。
采用上述方法,电子设备可以在触发显示第一动效的目标事件结束时,不渲染第一应用的应用画面,提高了电子设备渲染第一动效的效率,从而使第一动效显示流畅不卡顿。
在第一方面的一种可能的设计方式中,电子设备不渲染第一应用的应用画面包括:电子设备控制第一应用的界面视图Surface View组件不向电子设备中的图形处理器GPU发送第一渲染任务。
应理解,第一应用中的界面视图SurfaceView组件的线程一般用于生成第一应用中画面较为复杂的内容的第一渲染任务,例如,地图应用中的地图应用视图组件(SurfaceView)的地图画像线程一般用于生成地图应用中地图画像(参见图6中界面601中6012所示的区域)的渲染任务1。
也就是说,电子设备控制第一应用的界面视图组件不向电子设备中的图形处理器GPU发送第一渲染任务,可以减轻GPU的负载,使得GPU可以快速渲染第一动效,同时不会影响第一应用中其他线程的正常运行。
在第一方面的一种可能的设计方式中,第一界面包括电子设备中第一应用的应用信息具体为:第一界面包括在前台运行的第一应用的应用界面。以第一应用为地图应用为例,第一界面可以为参见如4的界面101所示地图应用在前台运行时的应用界面。
目标事件包括从第一界面的底部向上滑动的事件,第一图像包括从第一界面的底部向上滑动的事件结束时第一应用的应用画面。
例如,目标事件包括从如4的界面101中,地图应用在前台运行时的应用界面的底部向上滑动的事件,第一图像包括上述向上滑动的事件结束时,地图应用的应用画面,参见图5中界面501中地图应用的缩略界面5011显示的内容。
这样,响应于从第一界面的底部向上滑动的事件的结束,电子设备在显示第一动效的过程中,可以不渲染第一应用的应用画面,而是将从第一界面的底部向上滑动的事件结束(如图5中从第一界面的底部向上滑动到B点时松手)时第一应用的应用画面作为第一应用的快照,基于上述第一应用的快照渲染第一动效。
应理解,一般情况下,响应于从第一界面的底部向上滑动的事件的结束,电子设备显示的第一动效包括进入多任务界面的动效。
在第一方面的一种可能的设计方式中,在响应于所述第一动效结束或者第一时间区间的时间长度达到第一时长后,电子设备渲染第一应用的应用画面的过程中,如果在第一时刻,电子设备将第一应用从前台运行切换到后台运行,则电子设备不渲染第一应用的应用画面。
示例性的,响应于从第一界面的底部向上滑动的事件的结束,电子设备显示进入多任务界面的动效,在响应于进入多任务界面的动效结束或者第一时间区间的时间长度达到第一时长后,电子设备渲染地图应用的应用画面的过程中,如果第一时刻,电子设备将地图应用从前台运行切换到后台运行,则电子设备不渲染地图应用的应用画面。
这样,电子设备可以在完成动效并切换第一应用的至后台运行之后,停止渲染第一应用的应用画面,减轻GPU的负载。
在第一方面的一种可能的设计方式中,第一界面包括电子设备中第一应用的应用信息具体为:第一界面包括在电子设备的后台运行的第一应用的缩略界面。以第一应用为地图应用为例,第一界面包括在电子设备的后台运行地图应用时地图应用的缩略界面,参见图6中界面203显示的多任务界面中地图应用的缩略界面2031。
目标事件包括对第一应用的缩略界面的点击事件,第一图像包括第一应用结束在电子设备的前台运行时的截图。
应理解,一般情况下,对第一应用的缩略界面的点击事件指示启动第一应用,对应电子设备显示启动第一应用的动效。而电子设备在显示启动第一应用的动效过程中,不渲染第一应用的应用画面,而是基于第一应用结束在电子设备的前台运行时的截图来渲染第一动效。以从多任务界面启动第一应用,以第一应用为地图应用为例,参见图16中界面1501中地图应用的缩略界面15011内显示的截图,即为地图应用结束在电子设备的前台运行时的截图。电子设备显示如图16中界面1501的启动地图应用的动效,包括对地图应用的缩略界面15011内显示的截图逐渐放大的动效,及地图应用的缩略界面15011内显示的截图方位变化的动效。
应理解,从电子设备的主界面启动第一应用的过程中,电子设备执行的渲染方法也是与上述从多任务界面启动第一应用的过程类似的,在此不再赘述。
这样,电子设备可以在启动第一应用的过程中,不渲染第一应用的应用画面,可以减轻GPU的负载,获取第一应用结束在电子设备的前台运行时的截图,并基于上述第一应用结束在电子设备的前台运行时的截图渲染第一动效,避免因不渲染第一应用的应用画面导致第一应用的显示区域出现空白的问题。
示例性的,第一应用的显示区域如图16中地图应用的缩略界面15011的区域,进一步的,第一应用的显示区域如图16中地图应用的缩略界面15011中15012所示的区域。其中,第一应用结束在电子设备的前台运行时的截图可以是进入多任务界面的动效结束后,电子设备将第一应用从前台运行切换至后台运行时的截图。
需要说明的是,上述设计方式与前文中“目标事件包括从第一界面的底部向上滑动的事件,第一图像包括从第一界面的底部向上滑动的事件结束时第一应用的应用画面”的场景结合。也就是说,电子设备可以先响应于从第一界面的底部向上滑动的事件,显示进入多任务界面的动效,在此过程中不渲染第一应用的应用画面,而是基于从第一界面的底部向上滑动的事件结束时第一应用的应用画面来渲染进入多任务界面的动效。在进入多任务界面的动效结束或者第一时间区间的时间长度达到第一时长时,电子设备渲染第一应用的应用画面,在第一时刻,电子设备将第一应用从前台切换到后台,电子设备不渲染第一应用的应用画面。此时,电子设备可以获取第一应用结束在电子设备的前台运行时的截图,并在第一应用的缩略界面中显示。然后,响应于第一应用的缩略界面的点击事件,电子设备显示启动第一应用的动效,在此过程中,电子设备不渲染第一应用的应用画面,而是基于上述第一应用结束在电子设备的前台运行时的截图渲染启动第一应用的动效。
在第一方面的一种可能的设计方式中,在第一时间区间内,电子设备控制第一应用的主线程向GPU发送第二渲染任务。也就是说,响应于目标事件结束,电子设备仅控制第一应用的界面视图组件不向GPU发送的第一渲染任务,而第一应用的主线程可以正常向GPU发送第二渲染任务,GPU可以执行第二渲染任务。在响应于第二渲染任务渲染得到第一帧图像之后,电子设备不删除第一图像。基于此,电子设备可以继续基于未被删除的第一图像渲染第一动效。
以从多任务界面启动第一应用,以第一应用为地图应用为例,参见图19,电子设备执行如界面1801的启动地图应用的动效(在此过程中,电子设备控制地图应用的主线程向GPU发送渲染任务2,GPU渲染地图应用的启动窗口18011中所示的打车、公共交通等控件),响应于启动地图应用的动效结束或者第一时间区间的时长达到第一时长,电子设备退出渲染管控操作(即不渲染地图应用的应用画面)。而此时,GPU已渲染完成地图应用的启动窗口18011中的打车、公共交通等控件,但是电子设备不删除地图应用的启动窗口18011中显示的截图。并且,电子设备基于上述截图渲染第一动效,参见图19中界面1802中地图应用的启动窗口18021仍显示地图应用的截图。
采用上述设计方式,电子设备可以在第一应用的主线程的第二渲染任务渲染完成之后,不删除第一应用的图像(具体可以是第一应用的截图),并基于没有删除的第一图像继续渲染第一动效。这样,在第一动效结束前,电子设备继续不渲染第一应用的应用画面,也不会造成第一应用的显示区域出现空白的问题,从而提高了用户的观感。
在第一方面的一种可能的设计方式中,电子设备包括管控名单,电子设备在确定管控名单包括第一应用的情况下,响应于目标事件结束,在第一时间区间内,电子设备不渲染第一应用的应用画面,基于第一图像渲染第一动效。
应理解,管控名单包括至少一个可能导致第一动效显示卡顿的应用的包名。示例性的,地图应用的画面复杂,电子设备中GPU同时渲染上述应用的应用画面和第一动效的动效画面时,GPU的负载较重,可能导致第一动效出现卡顿现象,电子设备可以将地图应用的包名存储在管控名单中,以在显示第一动效的过程中,不渲染地图应用的应用画面。
电子设备通过预先设置管控名单,在检测到在第一界面的目标事件时,确定管控名单包括第一应用(具体为包括第一应用的包名)的情况下,响应于目标事件结束,在第一时间区间内,电子设备不渲染第一应用的应用画面,而基于第一图像渲染第一动效。
在第一方面的一种可能的设计方式中,电子设备在确定管控名单不包括第一应用的情况下,响应于目标事件结束,在第一时间区间内,电子设备渲染第一应用的应用画面,基于第一应用的应用画面渲染第一动效。
采用上述设计方式,电子设备仅在管控名单包括第一应用时,才在显示第一动效的过程中,不渲染第一应用的应用画面。对于不在管控名单中的第一应用,电子设备在显示第一动效的过程中可以正常渲染第一应用的应用画面。
在第一方面的一种可能的设计方式中,在目标事件结束之前,电子设备响应于检测到在第一界面中的目标事件, 在第二时间区间内,电子设备不渲染第一应用的应用画面,同时获取在检测到目标事件时第一应用的图像作为第二图像(也可以称为第一应用的快照),并基于第二图像渲染第一动效,第二图像包括检测到目标事件时第一应用的图像。其中,第二时间区间位于第一时间区间之前。
这样,电子设备可以在目标事件的结束之前,不渲染第一应用的应用画面,并基于第二图像来渲染第一动效,实现在显示第一动效的过程中,第一应用的显示区域可以显示第二图像,而不会出现空白的现象。
在第一方面的一种可能的设计方式中,在响应于检测到在第一界面中的目标事件,在第二时间区间内,电子设备不渲染第一应用的应用画面,基于第二图像渲染第一动效之后,响应于第二时间区间的时间长度达到第二时长且目标事件未结束,电子设备渲染第一应用的应用画面,基于第一应用的应用画面渲染第一动效。其中,第二时长为第一动效的最大显示时长。这样,电子设备可以在第二时长内不渲染第一应用的应用画面,而在目标事件没有结束但第二时间区间的时间长度达到第二时长时,基于第一应用的应用画面渲染第一动效。从而避免因不渲染第一应用的应用画面的第二时间区间过长,导致第一应用的主线程出现异常的问题。
在第一方面的一种可能的设计方式中,在第一时间区间内,电子设备不渲染第一应用的应用画面,基于第一图像渲染第一动效,电子设备可以显示第二界面,第二界面包括第一动效,第一动效包括第一图像,第一图像为第一应用结束在电子设备的前台运行时的截图或者目标事件结束时第一应用的应用画面。也就是说,在第一时间区间内,第一图像的图像内容保持不变。
采用上述设计方式,电子设备仅获取一次第一图像,在显示动效的过程中,一直基于相同的第一图像渲染第一动效,而无需重复多次获取第一图像。
在第一方面的一种可能的设计方式中,电子设备检测到在第一界面中的目标事件包括:电子设备中的桌面应用检测到在第一界面中的目标事件。
响应于目标事件结束,在第一时间区间内,电子设备不渲染第一应用的应用画面,基于第一图像渲染第一动效,包括:响应于目标事件结束,桌面应用向第一应用的界面视图Surface View组件发送第一指令,桌面应用向电子设备的图像处理器GPU发送第二指令。
响应于第一指令,在第一时间区间内,第一应用的界面视图Surface View组件不向GPU发送第一渲染任务。响应于第二指令,在第一时间区间内,GPU基于第一图像渲染第一动效。
采用上述设计方式,在目标事件结束时,电子设备中的桌面应用通过向第一应用的界面视图组件发送第一指令,实现不渲染第一应用的应用画面(具体为界面视图组件的线程生成的第一渲染任务对应的应用画面),同时通过向GPU发送第二指令,实现渲染第一动效并显示。
在第一方面的一种可能的设计方式中,第一指令包括第一时长。
响应于第一动效结束或者第一时间区间的时间长度达到第一时长,电子设备渲染第一应用的应用画面,包括:响应于第一动效结束,桌面应用向第一应用的界面视图Surface View组件发送第三指令。响应于第三指令,第一应用的界面视图Surface View组件向GPU发送第一渲染任务。
或者,响应于第一时间区间的时间长度达到第一时长,电子设备(可以通过桌面应用或界面控制)向第一应用的界面视图Surface View组件发送第四指令。响应于第四指令,第一应用的界面视图Surface View组件向GPU发送第一渲染任务。其中,第三指令和/或第四指令,用于指示Surface View组件向GPU发送第一渲染任务。
基于此,电子设备可以在第一动效结束时,通过桌面应用发送第三指令来指示第一应用的界面视图Surface View组件向GPU发送第一渲染任务,以使GPU可以渲染第一应用的应用画面。或者,电子设备在第一时间区间的时间长度达到第一时长,通过发送第四指令来指示第一应用的界面视图Surface View组件向GPU发送第一渲染任务,以使GPU可以渲染第一应用的应用画面。实现基于不同的条件,实现在第一时长内或第一动效显示过程中对第一应用的应用画面的渲染管控,实现在第一时长内第一动效可以显示流畅或第一动效整个显示过程流畅无卡顿。
应理解,在上述第一动效结束和第一时间区间的时间长度达到第一时长两个条件中,电子设备以先满足的条件来执行对应的操作。
示例性的,第一动效结束时,第一时间区间的时间长度未达到第一时长,桌面应用发送第三指令来指示第一应用的界面视图Surface View组件向GPU发送第一渲染任务,以使GPU可以渲染第一应用的应用画面。
在第一方面的一种可能的设计方式中,电子设备控制第一应用的主线程向GPU发送第二渲染任务,在响应于第二渲染任务渲染得到第一帧图像之后,电子设备不删除第一图像,包括:
在第一时间区间内:电子设备向第一应用的主线程发送第五指令;响应于第五指令,第一应用的主线程向GPU发送第二渲染任务;
在响应于第二渲染任务渲染得到第一帧图像之后,电子设备不删除第一图像。
其中,在响应于第二渲染任务渲染得到第一帧图像之后,电子设备的窗口服务不删除第一图像,直至第一渲染任务渲染得到第一帧图像之后,窗口服务删除第一图像。
采用上述设计方式,电子设备仅在第一应用的主线程的第二渲染任务和界面视图组件的第一渲染任务都渲染完成之后,才删除第一图像,避免在显示动效过程中,电子设备不渲染第一渲染任务导致第一应用的部分区域出现空白的问题,使动效显示完整,提高用户的观感。
第二方面,本申请实施例提供一种电子设备,电子设备包括存储器和一个或多个处理器,存储器与处理器耦合;存储器中存储有计算机程序代码,计算机程序代码包括计算机指令,当计算机指令被处理器执行时,使得电子设备执行上述第一方面及其任一种可能的设计方式中的方法。
第三方面,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机指令,当计算机指令在电子设备上运行时,使得电子设备执行如上述第一方面及其任一种可能的设计方式中的方法。
第四方面,本申请实施例还提供了一种计算机程序产品,包括计算机指令,当计算机程序产品在电子设备上运行时,使得电子设备执行如上述第一方面及其任一种可能的设计方式中的方法。
可以理解地,上述提供的电子设备,计算机可读存储介质,计算机程序产品所能达到的有益效果,可参考第一方面及其任一种可能的设计方式中的有益效果,此处不再赘述。
附图说明
图1为本申请实施例提供的一种手机执行动效的界面示意图之一;
图2为本申请实施例提供的一种手机执行动效的界面示意图之二;
图3为本申请实施例提供的一种手机执行动效的界面示意图之三;
图4为本申请实施例提供的一种手机执行动效的界面示意图之四;
图5为本申请实施例提供的一种手机执行动效的界面示意图之五;
图6为本申请实施例提供的一种手机执行动效的界面示意图之六;
图7为本申请实施例提供的一种手机的软硬件架构图;
图8为本申请实施例提供的一种类和接口示意图;
图9为本申请实施例提供的一种渲染架构示意图;
图10为本申请实施例提供的一种渲染方法的业务轨道图之一;
图11为本申请实施例提供的一种渲染方法的交互图之一;
图12为本申请实施例提供的一种渲染方法的交互图之二;
图13为本申请实施例提供的一种渲染方法的流程图;
图14为本申请实施例提供的一种运行状态图;
图15为本申请实施例提供的一种渲染方法的业务轨道图之二;
图16为本申请实施例提供的一种手机执行动效的界面示意图之七;
图17为本申请实施例提供的一种渲染方法的交互图之三;
图18为本申请实施例提供的一种渲染方法的业务轨道图之三;
图19为本申请实施例提供的一种手机执行动效的界面示意图之八;
图20为本申请实施例提供的一种渲染方法的交互图之四。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。其中,在本申请实施例的描述中,以下实施例中所使用的术语只是为了描述特定实施例的目的,而并非旨在作为对本申请的限制。如在本申请的说明书和所附权利要求书中所使用的那样,单数表达形式“一种”、“所述”、“上述”、“该”和“这一”旨在也包括例如“一个或多个”这种表达形式,除非其上下文中明确地有相反指示。还应当理解,在本申请以下各实施例中,“至少一个”、“一个或多个”是指一个或两个以上(包含两个)。术语“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系;例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A、B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。
在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。术语“连接”包括直接连接和间接连接,除非另外说明。“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。
在本申请实施例中,“示例性地”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性地”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性地”或者“例如”等词旨在以具体方式呈现相关概念。
本申请实施例提供的渲染方法,可以应用于电子设备。示例性的,电子设备可以是手机、平板电脑、桌面型计算机、膝上型计算机、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本,以及蜂窝电话、个人数字助理(personal digital assistant,PDA)、增强现实(augmented reality,AR)、虚拟现实(virtual reality,VR)设备等设备,本申请实施例对该电子设备的具体类型不作特殊限制。
下文中主要以电子设备为手机为例对渲染方法进行说明。
上述渲染控制方法可以应用于动效渲染的场景中。参见图1,动效渲染的场景可以是:用户从界面101的底部向上执行向上滑动操作的过程(如从界面101中的A点滑动至界面103中的B点的过程)中,手机渲染得到从界面101到界面102再到界面103的动效的场景。参见图2,动效渲染的场景可以是:响应于用户从界面103中抬手,手机渲染得到从界面103到界面201再到界面202最后到界面203的动效的场景。参见图3,动效渲染的场景可以是:响应于用户对界面203中地图应用的缩略界面2031的点击操作结束,手机渲染得到从界面203到界面301再到界面302最后到界面303的动效的场景。为了便于说明,图2中界面103、图3中界面203也可以称为第一界面,地图应用的应用界面101、地图应用的缩略界面1031、2031也可以称为电子设备中第一应用的应用信息。上述从界面101的底部向上滑动操作、对界面203中地图应用的缩略界面2031的点击操作等也可以称为目标事件。进一步的,从界面101的底部向上滑动操作也可以称为从第一界面的底部向上滑动的事件。对界面203中地图应用的缩略界面2031的点击操作也可以称为对第一应用的缩略界面的点击事件。
当然,除上述图1-图3的示例之外,动效渲染的场景还可以是其他手机渲染得到动效的场景,本申请实施例对此不作具体限定。示例性的,动效渲染的场景也可以是:响应于用户对手机的桌面中某个应用的应用图标的点击操作,渲染得到打开应用的动效(如应用界面从小变大的动效)的场景。
通常情况下,可以将动效分为如下两类:第一类,响应于用户操作过程的动效,如图1中用户从界面101的底部向上执行向上滑动操作的过程中的动效。第二类,用户操作结束后的动效,如图2中用户从界面103中向上滑动操作结束后(同上述松手后)的动效,图3中用户对界面203中地图应用的缩略界面2031的点击操作结束后的动效等。为了便于说明,上述两类动效也可以称为第一动效。
在上述第一类或者第二类动效中每一帧动效的渲染时,手机要执行应用画面的渲染和动效画面的渲染。
其中,应用画面是指用户操作针对的目标应用的画面。继续参见图1,用户在界面101中开始执行滑动操作,界面101是地图应用的应用界面,则目标应用是指地图应用,相应的,应用画面的渲染包括对界面102中地图应用的缩略界面1021和界面103中地图应用的缩略界面1031的渲染。例如,经过渲染后,缩略界面1021中定位图标1022的位置移动到了缩略界面1031中定位图标1032的位置。同理,图2中结束的向上滑动操作以及图3中结束的点击操作都是针对地图应用,则目标应用也是地图应用,此处不再赘述。
其中,动效画面是指动效的尺寸变化(如放大缩小变化)、方位变化(如左右移动变化)等视觉效果的画面。继续参见图1,界面102中地图应用的缩略界面1021缩小到界面103中地图应用的缩略界面1031,以及界面102中其他后台应用的缩略界面1023缩小到界面103中其他后台应用的缩略界面1033,即动效的尺寸变化了。以及,从界面101中全屏显示地图应用的应用界面变化到界面102中露出其他后台应用的缩略界面1023和界面103中露出其他后台应用的缩略界面1033,即动效的方位变化了。同理,图2所示的动效过程中,界面201中地图应用的缩略界面2011也缩小到界面203中地图应用的缩略界面2031,从界面201中露出其他后台应用的部分缩略界面2012到界面203中露出其他后台应用的完整缩略界面2032。如图3所示的动效中,界面301中地图应用的缩略界面3011放大到界面303中全屏显示地图应用的应用界面。以及界面301中露出其他后台应用的缩略界面3012到界面303不显示其他后台应用的缩略界面。
然而,如果应用画面较复杂,在每帧动效的处理过程中,手机通过GPU执行应用画面的渲染操作的耗时较长,导致GPU阻塞,动效画面等待GPU渲染的时间变长,从而出现动效画面卡顿、丢帧的现象。继续参见图1,界面102中地图应用的缩略界面1021越复杂,手机执行将地图应用的缩略界面1021缩小到地图应用的缩略界面1031的动效画面耗时就越长,手机从界面102切换到界面103的过程就会出现卡顿。
针对上述问题,本申请实施例提出一种渲染方法,该方法可以应用于手机。采用本申请实施例的方法,在上述动效渲染的场景中,手机可以通过GPU进行动效画面的渲染,但是暂停应用画面的渲染。在上述动效结束后,手机通过GPU实现应用画面的渲染。这样,手机在执行动效的过程中,GPU可以不执行应用的应用画面渲染任务,减轻GPU的负载,提高动效的流畅性。为了便于说明,从手机暂停应用画面的渲染开始,到动效结束后,手机开始通过GPU实现应用画面的渲染之间的时间区间也可以称为第一时间区间。
示例性的,参见图4,响应于用户从界面101的底部向上(如从界面101中的A点)执行向上滑动操作开始时,手机通过GPU渲染从界面101到界面401再到界面402的动效(也可以称为向上滑动的动效),同时手机暂停目标应用画面的渲染(如界面401中地图应用的缩略界面4011的渲染)。响应于向上滑动操作(如向上滑动操作到达界面101中的B点)结束,手机通过GPU进行地图应用画面的渲染,得到界面402中地图应用的缩略界面4021。这样,手机从界面101到界面401再到界面402的向上滑动的动效不会出现卡顿。为了便于说明,界面401中地图应用的缩略界面4011所示的图像也可以称为检测到目标事件时第一应用的图像,进一步的也可以称为第二图像。其中,目标事件为从第一界面的底部向上滑动的事件,第一应用为地图应用。
参见图5,响应于用户从界面103中抬手,手机开始通过GPU渲染从界面103到界面501再到界面502最后到界面503的动效(也可以称为进入多任务界面的动效),同时手机暂停目标应用画面的渲染(如界面501中地图应用的缩略界面5011、界面502中地图应用的缩略界面5021的渲染)。响应于上述进入多任务界面的动效结束,手机通过GPU进行地图应用画面的渲染,得到界面503中地图应用的缩略界面5031。这样,手机从界面103到界面501再到界面502最后到界面503的进入多任务界面的动效不会出现卡顿。为了便于说明,图1中地图应用的应用界面101显示的内容可以称为第一动效的画面内容。
参见图6,响应于用户对界面203中地图应用的缩略界面2031的点击操作结束,手机开始通过GPU渲染从界面203到界面601再到界面602的动效(也可以称为启动应用的动效),同时手机暂停目标应用画面的渲染(如界面601中地图应用的缩略界面6011的渲染)。响应于上述启动应用的动效结束,手机通过GPU进行地图应用画面的渲染,得到界面602所示的地图应用的应用界面。这样,手机从界面203到界面601再到界面602的启动应用的动效不会出现卡顿。
具体地,考虑到部分应用的场景并不复杂,手机执行动效的过程中,GPU同时渲染应用画面和动效画面时不会出现阻塞问题,进而不会影响动效画面的流畅性。手机可以先确定出在执行动效过程中,会造成动效卡顿的应用作为管控应用,确定出管控应用的包名并存储在管控包名列表中。这样,手机在接收到用户操作之后,确定上述用户操作针对的目标应用的包名(如用户在图1中界面101中开始执行向上滑动操作,界面101是地图应用的应用界面,则目标应用是指地图应用)。在上述目标应用的包名与管控包名列表中的任一包名匹配时,确定上述目标应用为管控应用。手机通过GPU进行动效画面的渲染的同时,向管控应用发送暂停渲染指令,控制管控应用暂停向GPU发送应用画面渲染任务,减轻GPU的负载,提高动效的流畅性。直至动效结束,手机向管控应用发送恢复渲染指令,以控制管控应用恢复向GPU发送应用画面渲染任务,手机通过GPU执行应用的应用画面渲染任务。为了便于说明,上述管控包名列表也可以称为管控名单。
需要说明的是,在管控应用已启动的状态下,手机控制管控应用暂停向GPU发送渲染任务后,手机可以获取管控应用暂停向GPU发送应用画面的渲染任务之前的最后一帧图像数据,作为管控应用的快照。手机执行动效的过程中可以显示管控应用的快照(如图4中界面401中的4011、图5中界面501中5011、界面502中5021)。或者在启动管控应用的过程中,手机控制管控应用暂停向GPU发送渲染任务后,手机可以获取管控应用在前台运行结束时,应用画面的截图,手机执行动效的过程中可以显示管控应用的截图(如图6中界面601中6011为地图应用的启动窗口,可以显示地图应用在前台运行结束时的截图)。直至动效结束,手机向管控应用发送恢复渲染指令后,手机通过GPU执行管控应用的应用画面渲染任务,手机显示管控应用的应用界面(如图4中界面402中的4021、图5中界面503中5031为渲染后地图应用的缩略界面,图6中界面602为渲染后地图应用的应用界面)。为了便于说明,上述快照也可以称为目标事件结束时第一应用的应用画面,也即第一图像。
一般情况下,管控应用一般包括关键控件和非关键控件。如图6中界面203中地图应用的打车服务1011、停车服务1012等控件为关键控件,界面203中地图应用的1013区域内定位图标1014等控件均为非关键控件。其中,管控应用一般采用主线程渲染上述关键控件,对管控应用的关键控件执行渲染管控操作可能会导致管控应用的主线程异常,从而导致管控应用显示异常。并且,关键控件的复杂程度较低,对GPU的负载影响较小,因此,GPU渲染关键控件不会对动效的流畅性造成影响。考虑到上述情况,手机可以对管控应用的非关键控件进行渲染控制操作,而不对管控应用的关键控件进行渲染控制操作,避免因影响管控应用的主线程,导致手机出现管控应用显示异常的问题。
示例性的,地图应用包括地图应用关键组件和地图应用视图组件(SurfaceView)。其中,地图应用关键组件用于创建地图应用的主线程,向GPU发送地图应用中主画像的渲染任务2,主画像可以包括如图6中界面203所示的打车服务1011、公共交通、机票、旅游景点、购物中心、租车服务、停车服务1012、美食、更多)等关键控件。
地图应用视图组件用于创建地图画像线程,向GPU发送地图应用中地图画像(如图6中界面203中1013所示的区域)的渲染任务1,地图画像可以包括定位图标1014等非关键控件。因此,桌面应用具体可以对地图应用视图组件执行渲染管控操作,实现对地图应用中非关键控件的渲染管控操作。
也就是说,手机在执行动效的过程中,手机可以向GPU发送动效画面渲染任务,控制地图应用关键组件向GPU发送渲染任务2。同时,手机可以控制地图应用视图组件暂停向GPU发送渲染任务1,直至动效结束。
继续参见图6,手机执行启动应用的动效的过程中,手机可以控制地图应用视图组件暂停向GPU发送地图画像(如图6中界面601中6012所示区域)的渲染任务1。同时,地图应用关键组件仍向GPU发送主画像的渲染任务2。界面601中6011区域可以显示地图应用的截图。直至动效结束,手机控制地图应用视图组件向GPU发送地图画像的渲染任务1,得到界面602所示的地图应用的应用界面。为了便于说明,上述界面601中6011区域显示的地图应用的截图,也可以称为第一应用结束在电子设备的前台运行时的截图,进一步的,也可以称为第一图像。
参见图7,为本申请实施例提供的一种手机的软硬件结构图。
其中,手机中的软件系统可以采用分层架构,事件驱动架构或云架构。本申请实施例以手机为分层架构的Android™系统为例,示例性说明手机的软件结构。分层架构可将手机的软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android™系统分为四层,从上至下分别为应用程序层(Applicationlayer)、应用程序框架层(Framework)、系统库(native)和内核层(Kernel)。
其中,应用程序层701可以包括多种应用程序包,如桌面应用(launcher)7011和地图应用7012等。
示例性的,桌面应用7011可以实现手机100的数据显示的管理业务,例如手机100执行动效的过程中,桌面应用7011可以对地图应用进行渲染管控,以管理手机100中地图应用窗口的显示数据。
示例性的,地图应用可以实现定位业务(如地图导航、打车等)。
其中,地图应用7012包括多个组件,如地图应用关键组件70121和地图应用视图组件70122,地图应用7012采用上述多个组件来绘制与定位业务相关的图像数据。例如,地图应用7012的应用界面(如图6中的界面602)包括地图画像和主画像。地图应用视图组件70122用于创建独立的地图画像线程,并向GPU发送地图画像(如图6中界面203中1013所示的区域)的渲染任务1。地图应用关键组件70121用于创建独立的主画像线程,并向GPU发送主画像(如图6中界面203所示的打车服务1011、公共交通、机票、旅游景点、购物中心、租车服务、停车服务1012、美食、更多等关键控件)的渲染任务2。为了便于说明,上述地图应用的主画像线程也可以称为第一应用的主线程。
桌面应用7011响应于用户在多任务界面的向上滑动操作,向地图应用7012中的地图应用视图组件70122发送暂停渲染指令,暂停渲染指令用于指示地图应用视图组件暂停向GPU发送地图画像的渲染任务1。或者,桌面应用7011可以响应于动效结束,向地图应用视图组件70122发送地图画像的恢复渲染指令。
在一些实施例中,其中,桌面应用7011可以调用类和接口,来实现对地图应用7012的渲染管控操作。其中,上述桌面应用7011可调用的类包括应用暂停动作(APP PauseAction)、应用暂停封装器(APP Pause Wrapper)、暂停提供器(APP Pause provider)及暂停渲染提供器(Pause Render Provider)。
参见图8,应用暂停动作包括向上滑动开始(SWIPE_START)、向上滑动结束(SWIPE_HOME)、进入多任务(SWIPE_RECENT)、进入多任务(折叠屏状态)(SWIPE_RECENT_SINGLE)、多任务界面的应用启动(RECENT_CLICK)及桌面图标点击启动(ICON_CLICK)等多个方法。响应于不同的用户操作,桌面应用7011可以调用应用暂停动作中不同的方法。
示例性的,响应于用户在地图应用7012的界面执行向上滑动操作的开始,桌面应用可以调用应用暂停动作中的向上滑动开始方法,在手机100执行向上滑动的动效的过程中,对地图应用视图组件70122执行渲染管控操作。
又示例性的,响应于用户在地图应用7012的界面的向上滑动操作结束,桌面应用可以调用应用暂停动作中的进入多任务方法,实现在手机100执行进入多任务界面的动效的过程中,对地图应用视图组件70122渲染管控操作。
应用暂停动作包括管控开始(start)、管控结束(end)和间断(gap)等函数。其中,管控开始函数被调用时指示渲染管控操作的动作开始,管控结束函数被调用时指示动作开始结束渲染管控操作的动作结束。
应用暂停动作包括包名(packageName:String)、管控时长(duration :long)、触发时间(time:long)等属性。响应于任一个用户操作,应用暂停动作中的方法被调用时执行初始化,获取与用户操作对应的应用的包名、管控时长和用户操作的触发时间。示例性的,响应于用户在地图应用7012的界面执行向上滑动操作的开始,桌面应用可以调用应用暂停动作中的向上滑动开始方法,获取与向上滑动操作对应的地图应用的包名、向上滑动的动效的管控时长、向上滑动操作的开始时间。
应用暂停动作用于调用封装器(Wrapper),如应用暂停动作可调用的封装器为应用暂停封装器(APP Pause Wrapper)。
应用暂停封装器包括发送开始动效(setIsLiteAnimation)、桌面应用暂停(launcherOnStop)、管控开始(start)、管控结束(end)及获取(get)等函数。其中,管控开始函数被调用时指示渲染管控操作封装开始,管控结束函数被调用时指示渲染管控操作封装结束。应用暂停封装器包括开始动效(isLiteStartAnimation)和包名列表(PKG_List)等属性。
应用暂停封装器用于调用提供器(provider)和计数器(counter),如应用暂停封装器可调用的提供器为暂停提供器(APP Pause provider)。应用暂停封装器还可以用于接收暂停提供器返回的管控包名列表并存储。
暂停提供器用于调用暂停渲染提供器,以及接收暂停渲染提供器返回的管控包名列表并向应用暂停封装器发送。暂停提供器包括暂停(pause)、存储(restore)、启动(isEnabled)及获取管控包名列表(getPkgList)等函数。暂停函数被调用时可以传输暂停渲染指令,存储函数被调用时可以存储应用的包名。获取管控包名列表函数被调用时可以获取管控包名列表。
暂停渲染提供器包括暂停、存储、启动、获取管控包名列表、暂停渲染(pauseRendering)、暂停渲染列表等(initPauseRenderList)函数。暂停渲染函数被调用时可以传输暂停渲染指令。暂停渲染列表被调用时,可以停止获取管控包名列表。示例性的,暂停渲染提供器中获取管控包名列表函数被暂停提供器调用时,暂停渲染提供器可以从agp图形服务获取管控包名列表,并向暂停提供器发送。
计数器用于管理渲染管控流程。计数器包括运行动作(runningActions)。
计数器还包括增加(increase)、减少(decrease)、空(empty)、过期(isExpired)、返回字符串(toString)等函数。
示例性的,计数器可以基于应用暂停动作向上滑动操作结束动作调用管控开始函数和管控结束函数的操作,管理进入多任务界面的动效的渲染管控流程。
应用程序框架层702可以包括窗口服务(Window Manager Service,wms)、agp图形服务(Agp Service)和界面控制(Surface Control)等。
Agp图形服务为应用程序提供资源,例如管控包名列表等。窗口服务为应用程序提供窗口,例如,响应于用户对图3中界面203中地图应用的缩略界面2031的点击操作结束,窗口服务创建地图应用窗口。界面控制可以为应用程序提供显示界面的管理服务,例如,响应于桌面应用的调用,界面控制向地图应用视图组件70122发送暂停渲染指令,控制地图应用视图组件暂停向GPU发送渲染任务1,以管理手机100的显示数据。
系统库703可以包括多个功能模块。例如:媒体库(Media Libraries)、图形处理库(例如:OpenGL ES)等。媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。图形处理库用于实现图形绘图、图像渲染、合成和图层处理等。在图像渲染的过程中,图形处理库可用于将渲染命令转换成图形命令。在一种具体的实现方式中,GPU基于图形处理库转换得到的图形命令,可以确定应用画面的内容情况(如GPU基于图形处理库将渲染任务1转换得到图形命令,可以确定地图应用中地图画像的复杂程度等)。
在一些实施例中,系统库703中还包括图像合成处理服务(Surface Flinger)7031。图像合成处理服务7031可以将渲染好的每一帧图像数据合成,并送显。例如,图像合成处理服务7031可以将渲染好的每一帧进入多任务界面的动效、地图应用的主画像及地图画像进行合成,并送显。
示例性的,地图应用通过窗口管理分配一个界面(surface),其中,地图应用分配绘制图像缓冲器(dequeueBuffer)来对地图画像进行绘图。在绘制、渲染完成后推送队列缓冲器(queueBuffer)到图像合成处理服务7031进行合成并送显。
在一些具体的实施例中,桌面应用7011可以采用图像合成处理服务7031向其他应用发送指令。示例性的,桌面应用7011可以采用图像合成处理服务7031向地图应用视图组件70122发送暂停渲染指令或恢复渲染指令。
内核层704是硬件和软件之间的层。内核层704可以包括显示驱动、摄像头驱动、中央处理器驱动等。
硬件层705包括中央处理器(Central Processing Unit,CPU)和图形处理器(Graphics Processing Unit, GPU)等。
图像数据的处理过程包括绘制(draw)、渲染、合成、送显等一系列操作。
在一些实施例中,手机100显示的每一帧管道中的图像数据均由CPU和GPU运行完成绘制、渲染操作,最后由图像合成处理服务进行合成并送显。
参见图9,CPU用于执行绘制操作,包括输入INPUT、刷新INVALIDATE、测量Measure、布局Layout、记录Record、执行Execute、显示列表DISPLAY LIST等。GPU执行Resterization栅格化操作,实现对每帧管道中的图像数据的渲染操作,然后经由图像合成处理服务进行合成,再发送至显示屏送显。
本申请实施例这里将结合图7的软硬件架构,同样以图5中手机由地图应用进入多任务界面的过程为例,结合图10所示的业务轨道图作进一步说明。
手机在前台运行地图应用时,显示如图5中界面103所示的地图应用的缩略界面,此时地图应用视图组件向GPU发送渲染任务1,导致GPU的负载较高。
响应于用户对地图应用的缩略界面执行向上滑动操作结束,桌面应用执行进入多任务界面的动效,向GPU发送进入多任务界面的动效的渲染任务3,同时通过图像合成处理服务向地图应用的地图应用视图组件发送暂停渲染指令。示例性的,桌面应用可以调用puaseRender()函数下发暂停渲染指令。其中,暂停渲染指令包括地图应用的包名和管控时长。这样,手机可以显示如图5中的界面501、界面502所示的进入多任务界面的动效,其中,界面501中的5011和界面502中的5021均为地图应用的缩略界面,用于显示地图应用的快照。
响应于接收到暂停渲染指令,地图应用视图组件暂停向GPU发送渲染任务1,此时GPU的负载较轻。响应于进入多任务界面的动效结束,桌面应用进入前台运行,通过图像合成处理服务向地图应用的地图应用视图组件发送恢复渲染指令。示例性的,桌面应用可以调用pauseRender函数下发恢复渲染指令,恢复渲染指令包括地图应用的包名和管控时长,其中,管控时长为0,指示退出渲染管控流畅。
响应于接收到恢复渲染指令,地图应用视图组件向GPU发送渲染任务1,GPU的负载较重。手机可以显示如图5中的界面503,界面503中的5031为渲染后地图应用的缩略界面。
响应于手机成功将地图应用切换成后台运行,地图应用视图组件不再向GPU发送渲染任务1,GPU的负载较轻。为了便于说明,上述手机将地图应用切换成后台运行的时刻,也可以称为第一时刻。
结合图10可以看出,手机在执行进入多任务界面的动效的过程中,采用桌面应用对地图应用的地图应用视图组件进行渲染管控操作,可以减轻GPU的负载,从而提高GPU渲染进入多任务界面的动效的效率,使得多任务界面动效显示流畅。
应理解,手机执行的动效具有一定的执行时长,如果手机较长时间执行某动效,则可能是手机在执行动效的过程中出现了异常,致使动效无法结束。在这期间,如果手机一直对管控应用执行渲染管控操作,可能影响管控应用的主线程的正常运行,造成手机显示界面的异常。基于此,手机可以设定一个管控时长1,管控时长1可以是动效的执行时长。手机对管控应用执行计时为管控时长1的渲染管控操作。这样,手机可以仅在动效时长内对管控应用执行渲染管控操作。为了便于说明,上述管控时长1也可以称为第一时长。
仍以由地图应用进入多任务界面的场景为例,进入多任务界面的动效的执行时长为600ms,则手机可以设置管控时长1为600ms。从手机执行进入多任务界面的动效起开始计时,如果手机执行进入多任务界面的动效的时长达到管控时长1,则手机退出对地图应用视图组件的渲染管控流程。为了便于说明,地图应用也可以称为第一应用,地图应用的地图应用视图组件也可以称为第一应用的界面视图Surface View组件。
下面仍以由地图应用进入多任务界面的场景为例,结合根据管控包名列表确定是否执行渲染管控流程、暂停地图画像的渲染时显示地图应用的快照及根据管控时长1管理渲染管控流程的内容,基于图11对手机执行进入多任务界面的动效过程中,如何实现针对地图应用视图组件的管控流程进行具体说明:
S000、地图应用视图组件向GPU发送渲染任务1。
具体地,手机在前台运行地图应用时,地图应用的地图应用视图组件向GPU发送地图画像的渲染任务1。
可以理解的是,在上述手机在前台运行地图应用的情况下,地图应用的地图应用关键组件可以持续向GPU发送主画像的渲染任务2,以指示GPU渲染地图应用的主画像。
S001、GPU响应于接收到渲染任务1,渲染地图画像。
具体地, GPU响应于接收到地图画像的渲染任务1,执行上述渲染任务1以渲染地图画像。
S002、GPU向显示屏发送地图画像。
具体地,GPU在渲染完成地图画像时,逐帧向显示屏发送地图画像。
S003、显示屏显示界面1,界面1包括地图应用的应用界面。
具体地,手机在前台运行地图应用时,显示屏响应于接收到地图应用的住主画像和地图画像时,显示界面1,界面1包括地图应用的应用界面,地图应用的应用界面包括主画像和地图画像,参见图5中的界面103。
S004、响应于接收到操作a,桌面应用从Agp图形服务获取管控包名列表。
具体的,用户在地图应用的应用界面执行操作a时,操作a为用户对地图应用的应用界面执行的向上滑动的操作。显示屏将接收到的桌面应用发送操作a,以便于桌面应用响应操作a。
S005、响应于操作a结束,桌面应用确定地图应用包名位于管控包名列表中。
具体地,响应于接收到操作a,桌面应用可以通过调用类和接口获得管控包名列表,并将地图应用包名与管控包名列表中的包名一一进行匹配。如果管控包名列表中存在一个包名与地图应用的包名匹配,则桌面应用确定地图应用的包名在管控包名列表中,执行步骤S005。
可以理解的是,如果管控包名列表中不存在与地图应用的包名匹配的包名,则桌面应用确定地图应用的包名不在管控包名列表中,退出渲染管控流程。
需要说明的是,在步骤S004-S005之间,用户执行操作a的过程中,手机响应于操作a执行向上滑动的动效时,对地图应用执行渲染管控操作的过程也是类似的(例如,桌面应用确定地图应用的包名位于管控包名列表中,GPU渲染向上滑动的动效,桌面应用控制地图应用视图组件向GPU发送渲染任务1等),在此不在赘述。
S006、桌面应用向GPU发送渲染任务3,渲染任务3指示GPU渲染进入多任务界面的动效。
具体地,桌面应用确定地图应用包名位于管控包名列表后,向GPU发送进入多任务界面的渲染任务3,渲染任务3指示GPU渲染进入多任务界面的动效。
S007、响应于接收到渲染任务3,GPU渲染进入多任务界面的动效。
具体地,响应于接收到渲染任务3,GPU执行渲染任务3,以渲染进入多任务界面的动效。
S008、GPU向显示屏发送进入多任务界面的动效。为了便于说明,上述渲染任务3也可以称为第二指令。
具体地,GPU在渲染完成首帧进入多任务界面的动效后,逐帧向显示屏发送进入多任务界面的动效。
需要说明的是,手机显示进入多任务界面动效时,会显示从地图应用的应用界面缩小到地图应用的缩略界面的动效,以及地图应用的缩略界面方位变化的动效。其中,地图应用的显示内容包括地图应用的快照(也就是桌面应用向地图应用视图组件发送暂停渲染指令时,地图应用的最后一帧送显的图像数据,参见图5中,如界面501中地图应用的缩略界面5011、界面502中地图应用的缩略界面5021均用于显示地图应用的快照)。基于此,GPU渲染的进入多任务界面动效,包括地图应用的快照从界面501到界面502的缩小以及方位变化的过程。
应理解,手机执行进入多任务界面的动效的渲染管控过程中,快照仅需获取一次。
S009、显示屏显示界面2,界面2包括进入多任务界面的动效。
具体地,响应于接收到首帧进入多任务界面的动效,显示屏显示界面2,界面2包括进入多任务界面的动效。进入多任务界面的动效包括从图5中界面103到界面501,再到界面502的过程。为了便于说明,上述界面2也可以称为第二界面。
S010、响应于操作a结束,桌面应用生成暂停渲染指令1,暂停渲染指令1包括管控时长1。
具体地,响应于操作a结束,桌面应用获取地图应用的包名及管控时长1,并基于地图应用的包名及管控时长1生成暂停渲染指令1。为了便于说明,上述暂停渲染指令1也可以称为第一指令。
应理解,响应于操作a结束,桌面应用也需要确定地图应用的包名位于管控包名列表中。如果管控包名列表中不存在与地图应用的包名匹配的包名,则桌面应用确定地图应用的包名不在管控包名列表中,退出渲染管控流程。
S011、桌面应用向地图应用视图组件发送暂停渲染指令1,暂停渲染指令1指示暂停渲染地图画像。
具体地,桌面应用向地图应用视图组件发送暂停渲染指令1,以指示地图应用视图组件暂停向GPU发送渲染任务1,从而暂停渲染地图画像。
S012、响应于接收到暂停渲染指令1,地图应用视图组件暂停向GPU发送渲染任务1。
具体地,响应于接收到暂停渲染指令1,地图应用视图组件暂停向GPU发送渲染任务1。这样,在手机执行多任务界面动效的过程中,GPU仅执行多任务界面动效的渲染任务3,以及地图应用的主画像的渲染任务2,负载较轻,提高了GPU渲染的效率。
S013、在接收到暂停渲染指令1之后,当时长a达到管控时长1时,界面控制生成恢复渲染指令1,时长a指示地图应用视图组件暂停发送渲染任务1的时长。
具体地,界面控制在接收到暂停渲染指令时开始计时得到时长a,时长a可以指示地图应用视图组件接收到暂停渲染指令并暂停向GPU发送渲染任务1的时长。在时长a达到管控时长1时,确定手机对地图应用视图组件执行渲染管控操作的时长达到进入多任务界面的动效的执行时长,桌面应用可以停止进入多任务动效,界面控制生成恢复渲染指令1,以控制地图应用视图组件重新向GPU发送渲染任务1。为了便于说明,上述时长a也可以称为第一时间区间的时间长度。渲染任务1也可以称为第一渲染任务。渲染任务2也可以称为第二渲染任务。为了便于说明,上述恢复渲染指令1也可以称为第四指令。
示例性的,管控时长1为600ms,时长a达到600ms时,手机确定可以退出渲染管控流程。界面控制生成恢复渲染指令1,以控制地图应用视图组件继续向GPU发送渲染任务1,以得到渲染后的地图画像。
需要说明的是,如果此时多任务界面动效仍未执行完成,界面控制可以向桌面应用返回多任务界面动效异常的信息。
在前文关于确定管控时长1的实施例中,是以手机直接将进入多任务界面的动效的执行时长作为管控时长1为例进行说明的。但是在实际应用中,并不以此为例。示例性的,手机还可以在所有动效的执行时长中,选择数值最大的执行时长作为管控时长1。或者,手机还可以在确定进入多任务界面的动效的执行时长之后增大该执行时长,得到管控时长1。还或者,手机还可以在所有动效的执行时长中选择数值最大的执行时长之后,增大执行时长,得到管控时长1。
仍以多任务界面动效的执行时长为600ms为例,在此基础上,手机可以增大管控时长1到700ms。
或者,手机在确定所有动效的执行时长中最大执行时长为750ms时,设定管控时长1为750ms。
又或者,手机在确定所有动效的执行时长中最大执行时长为750ms时,手机可以增大管控时长1到1000ms。
手机在动效(如进入多任务动效)的执行时长的基础上再增大执行时长,作为管控时长1,或者,在所有动效的执行时长中选择数值最大的执行时长的基础上再增大执行时长,作为管控时长1,可以使得管控时长1满足更多动效的执行时长需求。这样,可以增大手机对管控应用(如地图应用)执行渲染管控操作的时长,在手机执行动效的过程中,GPU不会出现阻塞现象,从而使动效显示流畅。
S014、界面控制向地图应用视图组件发送恢复渲染指令1,恢复渲染指令1指示渲染地图画像。
具体地,界面控制向地图应用视图组件发送恢复渲染指令1,恢复渲染指令1用于控制地图应用视图组件重新向GPU发送渲染任务1,以使GPU渲染地图画像。
S015、响应于接收到恢复渲染指令1,地图应用视图组件向GPU发送渲染任务1。
具体地,在地图应用未被切换成后台运行状态时,手机仍需显示渲染后的地图应用的缩略界面(包括主画像和地图画像)。因此,地图应用视图组件创建的地图画像线程仍在生成渲染任务1。响应于接收到恢复渲染指令1,地图应用视图组件向GPU发送渲染任务1。
可以理解的是,如果在地图应用视图组件暂停向GPU发送渲染任务1的时长a达到管控时长1时,地图应用已经被切换成后台运行状态,则地图应用视图组件创建的地图画像线程中不再生成渲染任务1。在这种情况下,响应于接收到恢复渲染指令1,地图应用视图组件不向GPU发送渲染任务1,手机可以执行步骤S028。
S016、响应于进入多任务界面的动效结束,桌面应用生成恢复渲染指令2,恢复渲染指令2包括地图应用的包名。
具体地,响应于进入多任务界面的动效结束,桌面应用退出对地图应用视图组件的渲染管控流程,生成恢复渲染指令2,恢复渲染指令2包括地图应用的包名。
可以理解的是,步骤S016是响应于多任务界面动效结束之后执行的步骤,步骤S013是响应于地图应用视图组件暂停向GPU发送渲染任务1的时长a达到管控时长1之后执行的步骤。由于多任务界面动效结束的时间点可能先到达,也可能是时长a达到管控时长1的时间点先到达。步骤S013和步骤S016中哪个步骤的触发条件先满足,可以执行对应的步骤。
例如,多任务界面动效结束的时间点先到达,则执行步骤S016,以及关联步骤S017-S018,而不执行步骤S013-S015。
S017、桌面应用向地图应用视图组件发送恢复渲染指令2,恢复渲染指令2指示渲染地图画像。
具体地,桌面应用基于地图应用的包名向地图应用视图组件发送恢复渲染指令2,指示地图应用视图组件向GPU发送渲染任务1,以使GPU渲染地图画像。为了便于说明,上述恢复渲染指令2也可以称为第三指令。
可以理解的是,手机对地图应用视图组件执行渲染管控流程时,并不对地图应用关键组件执行渲染管控操作,也就是说,响应于操作a 结束,电子设备可以向地图应用关键组件发送地图指令,以使地图应用关键组件可以持续向GPU发送渲染任务2,GPU执行渲染任务2,渲染地图应用的主画像但不送显。
S018、响应于接收到恢复渲染指令2,地图应用视图组件向GPU发送渲染任务1。
具体地,在进入多任务动效结束时,响应于接收到恢复渲染指令2,地图应用视图组件向GPU发送渲染任务1,直至地图应用被切换成后台运行状态。
S019、响应于接收到渲染任务1,GPU渲染地图画像。
具体地,多任务界面动效结束后,响应于接收到地图应用视图组件发送的渲染任务1,GPU执行渲染任务1,以渲染地图画像。
S020、GPU向显示屏发送地图画像。
具体地,响应于渲染完成首帧地图画像,GPU可以逐帧向显示屏发送地图画像。
S021、显示屏显示界面3,界面3包括多任务界面,多任务界面包括地图应用的缩略界面。
具体地,多任务界面动效结束时,手机的显示屏显示的界面3中包括多任务界面。此时地图应用未成功切换成后台运行状态,因此界面3还包括地图应用的缩略界面。其中,地图应用的缩略界面包括通过GPU渲染得到的地图画像及主画像,参见图5中界面503。
S022、响应于地图应用切换至后台运行,桌面应用生成获取截图指令。
具体地,响应于地图应用切换至后台运行,桌面应用不再显示地图应用的应用画面,而可以显示地图应用的截图,其中地图应用的截图为地图应用在前台运行结束时,显示屏显示的地图应用所在的图像。
示例性的,参见图5中的界面503中地图应用的缩略界面5031显示的是:进入多任务界面的动效结束后,GPU渲染得到的地图应用的应用画面(包括地图画像和主画像),如果此时地图应用切换至后台运行,桌面应用截取界面503中地图应用的缩略界面5031所在区域的图像,作为多任务界面下地图应用的截图。
S023、桌面应用向窗口服务发送获取截图指令。
具体地,桌面应用向窗口服务发送获取截图指令,以指示窗口服务截取地图应用的截图。
S024、响应于接收到获取截图指令,窗口服务截取地图应用在前台运行结束时,地图应用的缩略界面中显示的图像,作为地图应用的截图。
S025、窗口服务向显示屏发送地图应用的截图。
具体地,窗口服务截取到地图应用的截图之后,向显示屏发送。
S026、窗口服务将截图存储至内存。
具体地,窗口服务将地图应用的截图存储至内存中。
S027、内存存储地图应用的截图。
S028、显示屏显示界面4,界面4包括多任务界面,多任务界面包括地图应用的截图。
具体地,响应于地图应用切换至后台运行,GPU不再渲染地图应用的主画像和地图画像。在这个情况下,显示屏显示界面4,界面4包括多任务界面。其中,多任务界面包括地图应用的截图。
应理解,手机将地图应用从前台运行切换成后台运行的操作,可能在手机在执行进入多任务界面的动效的过程中就已完成。或者,在手机执行完成进入多任务界面的动效之后,手机才完成将地图应用从前台运行切换成后台运行的操作。本实施例中仅以手机在执行进入完成进入多任务界面的动效之后,才成功将地图应用从前台运行切换成后台运行为例进行说明,并不构成对地图应用切换至后台运行的时间的限制。
基于此,步骤S016、步骤S022的执行顺序并不以图11为限制。
下面仍以由地图应用进入多任务界面的场景为例,结合图12详细说明手机在执行进入多任务界面的动效的过程中,桌面应用6011调用类和接口实现对地图应用视图组件的渲染管控流程:
S000、地图应用视图组件向GPU发送渲染任务1。
S001、GPU响应于接收到渲染任务1,渲染地图画像。
S002、GPU向显示屏发送地图画像。
S003、显示屏显示界面1,界面1包括地图应用的应用界面。
可以理解的是,步骤S000-步骤S003可以参见前文实施例中的相关描述,在此不再赘述。
S103、响应于接收到操作a,桌面应用调用应用暂停动作。
具体地,响应于接收到操作a,桌面应用调用应用暂停动作,执行多任务界面动效及对应的渲染管控流程。
示例性的,桌面应用调用应用暂停动作中的向上滑动开始(SWIPE_START)动作。
S104、应用暂停动作初始化。
具体地,响应于桌面应用的调用,应用暂停动作执行初始化流程,创建可调用的应用暂停封装器和暂停渲染提供器。
S105、应用暂停动作调用应用暂停封装器。
具体地,应用暂停动作调用应用暂停封装器,以指示应用暂停封装器获取管控包名列表。
示例性的,应用暂停动作可以调用应用暂停封装器get()函数,指示应用暂停封装器获取管控包名列表。
S106、应用暂停封装器初始化。
具体的,响应于应用暂停动作类的调用,应用暂停封装器执行初始化,创建提供器(具体为应用暂停封装器),并调用暂停渲染提供器。
具体地,应用暂停封装器可以调用new()函数创建提供器。
S107、应用暂停封装器调用暂停渲染提供器。
具体的,应用暂停封装器调用暂停渲染提供器,以指示暂停渲染提供器从AGP图形服务获取管控包名列表。
在一些实施例中,暂停渲染提供器初始化时调用用于指示暂停渲染功能(transact)是否启动的功能参数。上述功能参数可以包括启动和未启动。示例性的,调用管控包名列表的功能参数为ro.vendor.display.anim_pauseRender.config。在ro.vendor.display.anim_pauseRender.config==0时指示暂停渲染功能未启动。在ro.vendor.display.anim_pauseRender.config==1时指示暂停渲染功能启动。也就是说,在ro.vendor.display.anim_pauseRender.config==1时暂停渲染提供器可以调用暂停渲染功能从Agp服务中获取管控包名列表。
S108、响应于应用暂停封装器的调用,暂停渲染提供器从AGP图形服务中获取管控包名列表。
具体的,响应于应用暂停封装器的调用,暂停渲染提供器从AGP图形服务中获取管控包名列表PKG_LIST。
S109、暂停渲染提供器向应用暂停封装器发送管控包名列表及暂停渲染提供器。
具体的,暂停渲染提供器向应用暂停封装器发送管控包名列表,便于应用暂停封装器存储管控包名列表。同时,暂停渲染提供器向应用暂停封装器发送暂停渲染提供器provider,便于应用暂停封装器下一次调用暂停渲染提供器。
S110、应用暂停封装器向应用暂停动作类发送应用暂停封装器。
具体的,应用暂停封装器向应用暂停动作类发送应用暂停封装器wrapper,便于应用暂停动作类下一次调用应用暂停封装器。
可以理解的是,上述步骤SS03-步骤S110为桌面应用初始化过程中执行的调用操作,可参见图11中的步骤S003。
S111、响应于操作a结束,桌面应用向GPU发送渲染任务3,渲染任务3指示渲染进入多任务界面的动效。
可以理解的是,步骤S111-步骤S114可以参见前文实施例中步骤S006-步骤S009的相关描述,在此不再赘述。
S112、响应于接收到渲染任务3,GPU渲染进入多任务界面的动效。
S113、GPU向显示屏发送多任务界面的动效。
S114、显示屏显示界面2,界面2包括进入多任务界面的动效。
S115、响应于操作a结束,桌面应用生成调用指令1,调用指令1包括地图应用的包名和管控时长1。
具体地,响应于操作a结束,桌面应用获取地图应用的包名及管控时长1,并基于地图应用的包名及管控时长1生成调用指令1,调用指令1包括地图应用的包名及管控时长1。
在一些实施例中,调用指令1还包括进入多任务界面的动效的触发时间1,进入多任务界面的动效的触发时间1也可以称为操作a的结束时间。
可以理解的是,步骤S110和步骤S115均是桌面应用响应于操作a结束之后执行的步骤,上述两个步骤的执行顺序不以图12中所示的顺序为限制。同理,与步骤S110关联的步骤S111-S114、与步骤S115关联的步骤S116-S122也不以图12中所示的顺序为限制。
S116、桌面应用向应用暂停动作发送调用指令1。
具体地,桌面应用调用应用暂停动作,向应用暂停动作发送调用指令1。
示例性的,桌面应用调用应用暂停动作中的向上滑动结束(SWIPE_RECNET)动作中的start()函数,向应用暂停动作发送调用指令1(即包括地图应用的包名和管控时长1)。
S117、应用暂停动作向应用暂停封装器发送调用指令1。
具体地,应用暂停动作调用应用暂停封装器,以向应用暂停封装器发送调用指令1。
示例性的,应用暂停动作中向上滑动结束(SWIPE_RECNET)动作执行start()函数,调用应用暂停封装器的start()函数,以向应用暂停封装器发送调用指令1。
示例性的,应用暂停动作调用start()函数,以向应用暂停封装器发送调用指令1。
S118、响应于接收到调用指令1,应用暂停封装器确定应用包名位于管控包名列表中、
具体地,响应于接收到调用指令1,应用暂停封装器将管控包名列表中的每个包名与地图应用的包名进行一一匹配。如果管控包名列表中存在一个包名与地图应用的包名匹配,则确定地图应用的包名在管控包名列表中。如果管控包名列表中不存在与地图应用的包名匹配的包名,则确定地图应用的包名不在管控包名列表中。
示例性的,应用暂停封装器可以确定暂停渲染功能是否启动,如果暂停渲染功能启动,再执行应用暂停封装器将管控包名列表中的每个包名与地图应用的包名进行一一匹配等操作。
S119、应用暂停封装器向暂停渲染提供器发送暂停渲染指令1,暂停渲染指令1包括地图应用的包名和管控时长1。
具体地,应用暂停封装器调用暂停渲染提供器,向暂停渲染提供器发送暂停渲染指令1,暂停渲染指令1包括地图应用的包名和管控时长1。
示例性的,应用暂停封装器调用暂停渲染提供器的暂停pause()函数,以向暂停渲染提供器发送暂停渲染指令1,暂停渲染指令1包括地图应用的包名和管控时长1。
S120、暂停渲染提供器向界面控制发送暂停渲染指令1。
具体地,响应于应用暂停封装器的调用,暂停渲染提供器调用界面控制,并向界面控制发送暂停渲染指令1。
示例性的,暂停渲染提供器调用界面控制的发送动效状态sendAnimationState()函数,以向界面控制发送暂停渲染指令1。
S121、界面控制向地图应用视图组件发送暂停渲染指令1。
具体地,响应于接收到暂停渲染指令1,界面控制根据暂停渲染指令携带的地图应用的包名,向地图应用视图组件发送暂停渲染指令1。
S122、响应于接收到暂停渲染指令1,地图应用视图组件暂停向GPU发送渲染任务1。
S123、在接收到暂停渲染指令1之后,当时长a达到管控时长1时,生成恢复渲染指令1,时长a指示地图应用视图组件暂停发送渲染任务1的时长。
S124、界面控制向地图应用视图组件发送恢复渲染指令1,恢复渲染指令1指示渲染地图画像。
S125、响应于接收到恢复渲染指令1,地图应用视图组件向GPU发送渲染任务1。
可以理解的是,如果在地图应用视图组件暂停向GPU发送渲染任务1的时长a达到管控时长1时,地图应用已经被切换成后台运行状态,则地图应用视图组件创建的地图画像线程中不再生成渲染任务1。在这种情况下,响应于接收到恢复渲染指令1,地图应用视图组件不向GPU发送渲染任务1,手机可以执行步骤S143。
可以理解的是,上述步骤S122-S125可以参见前文实施例中步骤S012-015的相关描述,在此不再赘述。
S126、响应于进入多任务界面的动效结束,桌面应用生成恢复渲染指令2,恢复渲染指令2包括地图应用的包名。
可以理解的是,步骤S126是响应于多任务界面动效结束之后执行的步骤,步骤S123是响应于时长a达到管控时长1之后执行的步骤。多任务界面动效结束的时间点可能先到达,也可能时长a达到管控时长1的时间点先到达。步骤S123和步骤S126不以图12中所示的顺序为限制。
示例性的,响应于操作a结束,向上滑动的动效结束,桌面应用可以调用应用暂停动作中向上滑动结束方法执行管控开始end()函数,传输地图应用的包名。
S127、桌面应用向应用暂停动作发送恢复渲染指令2。
示例性的,桌面应用可以调用应用暂停动作中向上滑动结束方法的end()函数,以向应用暂停动作发送恢复渲染指令2。
S128、应用暂停动作向应用暂停封装器发送恢复渲染指令2。
示例性的,向上滑动结束方法执行管控开始end()函数调用应用暂停封装器的end()函数,以向应用暂停封装器发送恢复渲染指令2。
S129、响应于接收到恢复渲染指令2,应用暂停封装器确定地图应用的包名位于管控包名列表。
具体地,应用暂停封装器获取地图应用的包名。应用暂停封装器将管控包名列表中的每个包名与地图应用的包名进行一一匹配。在管控包名列表中存在一个包名与地图应用的包名匹配时,确定地图应用的包名在管控包名列表中,调用暂停渲染提供器。
示例性的,应用暂停封装器可以确定暂停渲染功能是否启动,如果暂停渲染功能启动,再执行应用暂停封装器将管控包名列表中的每个包名与地图应用的包名进行一一匹配等操作。
S130、应用暂停封装器向暂停渲染提供器发送恢复渲染指令2。
示例性的,确定地图应用的包名在管控包名列表时,应用暂停封装器调用暂停渲染提供器的恢复restore()函数,以向暂停渲染提供器传输恢复渲染指令2。
S131、暂停渲染提供器向界面控制发送恢复渲染指令2,恢复渲染指令2指示渲染地图画像。
具体地,暂停渲染提供器向界面控制发送恢复渲染指令2,以指示界面控制渲染管控结束,界面控制可以控制地图应用视图组件重新向GPU发送渲染任务1。
示例性的,暂停渲染提供器调用界面控制sendAnimationState()函数,以向界面控制发送恢复渲染指令2,恢复渲染指令2包括地图应用的包名和管控时长3。其中,管控时长3设置为0,以指示退出渲染管控流程。
S132、界面控制向地图应用视图组件发送恢复渲染指令2。
具体地,响应于接收到恢复渲染指令2,界面控制确定恢复渲染指令2携带的地图应用的包名,根据地图应用的包名向地图应用视图组件恢复渲染指令2。
S133、响应于接收到恢复渲染指令2,地图应用视图组件向GPU发送渲染任务1。
S134、响应于接收到渲染任务1,GPU渲染地图画像。
S135、GPU向显示屏发送地图画像。
S136、显示屏显示界面3,界面3包括多任务界面,多任务界面包括地图应用的缩略界面。
需要说明的是,手机对地图应用视图组件进行渲染管控操作的过程中,地图应用关键组件可以持续向GPU发送主画像的渲染任务2,GPU执行渲染任务2,得到上述主画像并送显。基于此,显示屏显示的多任务界面中包括地图应用的缩略界面,地图应用的缩略界面仅包括上述主画像。
S137、响应于地图应用切换至后台运行,桌面应用生成获取截图指令。
S138、桌面应用向窗口服务发送获取截图指令。
S139、响应于接收到获取截图指令,窗口服务截取地图应用在前台运行结束时,地图应用的缩略界面中显示的图像,作为地图应用的截图。
S140、窗口服务向显示屏发送地图应用的截图。
具体地,窗口服务截取到地图应用的截图之后,向显示屏发送。
S141、窗口服务将地图应用的截图存储至内存中。
具体地,窗口服务将截图发送至内存中并存储
S142、内存存储地图应用的截图。
S143、显示屏显示界面4,界面4包括多任务界面,多任务界面包括地图应用的截图。
具体地,步骤S133-步骤S142,可以参见前文实施例中S018-步骤S028的相关描述,在此不再赘述。
可以理解的是,基于与步骤S020、步骤S026相同的理由,步骤S131、步骤S142的执行顺序并不以图12为限制。
采用上述渲染管控流程,桌面应用在手机执行进入多任务界面的动效的过程中,可以控制地图应用视图组件暂停向GPU发送渲染任务1。在地图应用视图组件暂停向GPU发送渲染任务1的时长a达到管控时长1之后,或者在进入多任务界面的动效结束之后,桌面应用才控制地图应用视图组件继续向GPU发送渲染任务1。这样,手机在执行进入多任务界面的动效的过程中,GPU负载减轻,提高了进入多任务界面的动效的渲染速度,使得进入多任务界面的动效流畅。
在前文图10-图12关于渲染管控的实施例中,主要是以手机执行进入多任务界面的动效的过程为例进行说明的,在实际应用中,响应于用户向上滑动操作开始(如图5中用户从界面103中抬手),手机执行向上滑动的动效的过程也与上述执行进入多任务界面的动效的过程相似的,在此不再赘述。本申请实施例这里结合图13示例性的说明两者结合的整体流程:
S201、响应于开始接收到向上滑动操作,桌面应用初始化,并获取管控包名列表。
具体的,手机在前台运行地图应用时,桌面应用显示地图应用的应用界面(如图1中界面101)。用户在地图应用的应用界面执行由底部向上的向上滑动操作时,桌面应用响应于开始接收到用户的向上滑动操作,进行初始化并获取管控包名列表。
示例性的,桌面应用调用应用暂停动作中的向上滑动开始(SWIPE_START)动作,向上滑动开始(SWIPE_START)动作执行start()函数,调用应用暂停封装器的start()函数,确定地图应用的包名和管控时长2。
具体地,桌面应用可以调用应用暂停动作、应用暂停封装器、暂停提供器及暂停渲染提供器,执行初始化,从Agp图形服务中获取管控包名列表。
S202、桌面应用确定地图应用的包名是否在管控包名列表中。
具体的,桌面应用确定地图应用的包名,将地图应用的包名与管控包名列表中的包名一一匹配。如果管控包名列表中存在与地图应用的包名匹配的包名,则确定地图应用的包名在管控包名列表中,桌面应用执行步骤S203。如果管控包名列表中不存在与地图应用的包名匹配的包名,则确定地图应用的包名不在管控包名列表中,桌面应用执行步骤S207。
S203、桌面应用向地图应用视图组件发送暂停渲染指令2,暂停渲染指令2包括管控时长2。
具体的,如果管控包名列表中存在与地图应用的包名匹配的包名,则桌面应用对地图应用执行渲染管控操作,因此,桌面应用可以根据用户的向上滑动操作生成暂停渲染指令2,并向地图应用视图组件发送暂停渲染指令2,暂停渲染指令2用于控制地图应用暂停向GPU发送渲染任务1。管控时长2为桌面应用在向上滑动的动效中对地图应用执行渲染管控操作的最大时长。示例性的,管控时长2可以为2000ms,或者管控时长2可以为2500ms。为了便于说明,上述管控时长2也可以称为第二时长。
示例性的,应用暂停封装器中start()函数被调用时,可以确定暂停渲染功能是否启动,如果暂停渲染功能启动,再执行应用暂停封装器将管控包名列表中的每个包名与地图应用的包名进行一一匹配等操作。然后,在确定地图应用的包名在管控包名列表中时,调用暂停渲染提供器的pause()函数,暂停渲染提供器调用界面控制的sendAnimationState()函数,传输地图应用的包名和管控时长2。
响应于接收到暂停渲染指令2,地图应用执行步骤S204。
S204、地图应用视图组件暂停向GPU发送渲染任务1。
具体的,地图应用视图组件在接收到暂停渲染指令1时,暂停向GPU发送渲染任务1。
应理解,手机在执行向上滑动的动效的过程中,桌面应用对地图应用视图组件执行渲染管控,手机可以获取桌面应用向地图应用视图组件发送暂停渲染指令2时,地图应用的最后一帧送显图像数据作为地图应用的快照,GPU渲染向上滑动的动效包括渲染上述地图应用的快照的动效(参见图4中界面401内地图应用的缩略界面4011显示地图应用的快照),手机显示从界面101到界面401的向上滑动的动效中,地图应用的快照的尺寸缩小、方位发生了变化。
S205、在时长a达到管控时长1或管控时长2时,桌面应用向地图应用视图组件发送恢复渲染指令1。
考虑到手机在执行向上滑动的动效的过程中,对地图应用视图组件执行渲染管控操作的时长(即时长a)过长(如超过管控时长2)时,桌面应用的主线程可能会受到影响,手机可能出现显示异常的问题。手机可以设定一个管控时长2,管控时长2可以是向上滑动的动效的最长执行时长。手机对地图应用视图组件执行计时为管控时长2的渲染管控操作。这样,手机可以仅在向上滑动的动效的最长执行时长内对地图应用视图组件执行渲染管控操作。在手机对地图应用视图组件执行渲染管控操作的时长达到管控时长2时,即使用户的向上滑动操作没有结束,手机也退出对地图应用视图组件的渲染管控流程。为了便于说明,手机在执行向上滑动的动效的过程中,对地图应用视图组件执行渲染管控操作的时间区间也可以称为第二时间区间,手机在执行向上滑动的动效的过程中,对地图应用视图组件执行渲染管控操作的时长(即时长a)也可以称为第二时间区间的时间长度。
具体地,在地图应用暂停向GPU发送渲染任务的时长a达到管控时长2时,桌面应用停止执行向上滑动的动效,桌面应用向地图应用发送恢复渲染指令1,使桌面应用的主线程正常运行。
具体的,桌面应用在地图应用视图组件暂停向GPU发送渲染任务时开始计时,作为时长a。在地图应用视图组件暂停向GPU发送渲染任务的时长a达到管控时长2时,桌面应用停止执行操作动效,桌面应用向地图应用视图组件发送恢复渲染指令1,恢复渲染指令1用于控制地图应用视图组件向GPU发送渲染任务1。或者在第一达到管控时长2时,桌面应用停止执行进入多任务界面的动效,桌面应用向地图应用视图组件发送恢复渲染指令1。
响应于接收到恢复渲染指令1,地图应用视图组件执行步骤S206。
S206、地图应用视图组件向GPU发送渲染任务1。
具体的,响应于接收到恢复渲染指令1,地图应用视图组件向GPU发送渲染任务1,桌面应用执行步骤S207。
S207、桌面应用退出渲染管控流程。
具体地,在地图应用视图组件暂停向GPU发送渲染任务的时长(也可以称为桌面应用对地图应用视图组件执行渲染管控操作的时长)达到管控时长1或管控时长2时,及时停止对地图应用视图组件执行渲染管控,退出渲染管控流程。
在用户的向上滑动操作结束时,桌面应用执行步骤S208。
S208、响应于向上滑动操作结束,桌面应用执行进入多任务界面的动效。
具体的,响应于用户的向上滑动操作结束,桌面应用执行进入多任务界面的动效,桌面应用向GPU发送渲染任务3。
S209、桌面应用确定地图应用的包名是否在管控包名列表中。
具体的,桌面应用确定地图应用的包名,将地图应用的包名与管控包名列表中的包名一一匹配。如果管控包名列表中存在与地图应用的包名匹配的包名,则桌面应用执行步骤S210。如果管控包名列表中不存在与地图应用的包名匹配的包名,则桌面应用执行步骤S207。
S210、桌面应用向地图应用视图组件发送暂停渲染指令1,暂停渲染指令1包括管控时长1。
具体的,如果管控包名列表中存在与地图应用的包名匹配的包名,则桌面应用对地图应用视图组件执行渲染管控操作。桌面应用向地图应用视图组件发送暂停渲染指令1,暂停渲染指令1包括管控时长1,暂停渲染指令1用于指示地图应用视图组件暂停向GPU发送渲染任务1。
地图应用响应于接收到第二暂停渲染指令,执行步骤S204。
S211、响应于进入多任务界面的动效结束,桌面应用向地图应用视图组件发送恢复渲染指令2。
具体的,响应于进入多任务界面的动效结束,桌面应用向地图应用视图组件发送恢复渲染指令2,恢复渲染指令2用于指示地图应用视图组件重新向GPU发送渲染任务。
响应于接收到恢复渲染指令2,地图应用视图组件执行步骤S206,然后,桌面应用执行步骤S207。
手机在向上滑动操作开始时,控制与管控包名列表匹配的地图应用进入渲染管控流程,减轻在执行向上滑动的动效过程中GPU的负载,使向上滑动的动效显示流畅。在向上滑动操作结束时,继续控制与管控包名列表匹配的地图应用进入渲染管控流程,减轻在执行进入多任务界面的动效过程中GPU的负载,使进入多任务界面的动效显示流畅。
参见图14中1401所示的手机的运行状态trace图,一般情况下,响应于用户的向上滑动操作,手机中的桌面应用主线程内包括多帧进入多任务界面的动效(如fps1,fps2,fps3,fps4,fps5,帧1也可以称为渲染任务3)。上述多帧进入多任务界面的动效需要执行绘制、渲染、合成等操作后实现送显。地图应用视图组件(Surface View)创建的地图应用视图组件线程内包括多帧地图图像(也可以称为渲染任务1)。图像合成处理服务(SurfaceFlinger)中包括队列缓冲器,队列缓冲器用于按照队列顺序向GPU发送上述多帧进入多任务界面的动效,多帧地图图像,以使GPU渲染进入多任务界面的动效和地图图像。由于地图图像的场景复杂,导致GPU负载较高,出现阻塞现象,桌面应用主线程中fps3的多任务界面动效等待渲染的时间较长,从而导致fps3的多任务界面动效的帧长变长(如fps3的帧长为56ms)。这种情况下,表明桌面应用主线程中出现丢帧问题,进入多任务界面的动效出现卡顿现象。
采用渲染方法之后,手机的运行状态trace图如图14中1402所示,响应于用户的向上滑动操作,手机中的桌面应用主线程内包括多帧进入多任务界面的动效(如fps6,fps7,fps8,fps9,fps10,fps11)。桌面应用向地图应用视图组件发送暂停渲染指令后,地图应用视图组件暂停向GPU发送渲染任务1。这样,图像合成处理服务的队列缓冲器可以按照队列顺序向GPU发送上述多帧进入多任务界面的动效,以使GPU对多帧进入多任务界面的动效完成渲染操作。在这种情况下,地图画像线程处于等待GPU的状态。
根据图14中1401-1402中的运行状态图可以看出,采用渲染方法之后,地图应用视图组件控制地图画像线程不再向GPU发送渲染任务1,GPU的负载减轻,桌面应用主线程向GPU发送的进入多任务界面的动效的渲染任务3等待时间减少,从而使帧长减小,提高了进入多任务界面的动效的流畅性。
上面图10-图14的实施例,主要以手机由地图应用进入多任务界面的过程为例进行了说明,手机在多任务界面启动地图应用的过程也是类似的,本申请实施例这里结合图15所示的业务轨道图作进一步说明:
响应于用户在多任务界面(如图16中界面203)对地图应用缩略界面(如图16内界面203中的2031)的点击操作结束,桌面应用接收到启动地图应用事件。桌面应用向窗口服务发送启动地图应用指令。窗口服务响应于启动地图应用指令,添加地图应用窗口,并从内存获取地图应用截图。响应于地图应用窗口添加完成,窗口服务向桌面应用发送执行启动应用的动效的指令,以指示桌面应用向GPU发送启动应用的动效的渲染任务4。这样,手机可以显示如图16中界面1501,界面1501中的15011为地图应用窗口,用于显示地图应用的截图。
同时,响应于地图应用窗口添加完成,桌面应用向地图应用关键组件和地图应用视图组件发送启动地图应用指令。接收到启动地图应用指令后,地图应用关键组件热启动并创建地图应用的主图像线程,地图应用的主图像线程创建地图应用的图层,向GPU发送主画像的渲染任务2,以指示GPU渲染主画像。接收到启动地图应用指令后,地图应用视图组件创建地图应用中地图画像线程。
响应于地图应用窗口添加完成,桌面应用向地图应用视图组件发送暂停渲染指令3。接收到暂停渲染指令3后,地图应用视图组件控制地图画像线程进入渲染管控状态,暂停向GPU发送地图画像(如图16中界面1501中15012所示区域)的渲染任务1。
在首帧主画像渲染完成时,地图应用的主画像线程向窗口服务发送首帧主画像渲染完成的第一信息。响应于接收到第一信息,窗口服务移除地图应用的窗口,删除地图应用的截图。可以理解的是,在这种情况下,显示屏显示的地图应用的缩略界面(参见图16中界面1502中的15021)仅包括主画像,这种情况下,地图应用的缩略界面15021中地图画像的区域出现透明。为了便于说明,首帧主画像也可以称为第二渲染任务渲染得到第一帧图像。
然后,响应于启动应用的动效结束,桌面应用向地图应用视图组件发送恢复渲染指令3。响应于接收到恢复渲染指令3,地图应用视图组件控制地图画像线程向GPU发送地图画像的渲染任务1。在GPU渲染完成首帧地图画像时,GPU送显。可以理解的是,在这种情况下,显示屏可以显示包括主画像和地图画像的地图应用的应用界面,如图16中界面1503。
下面,结合附图17详细说明在执行启动应用的动效的过程中,手机执行渲染管控流程的进行详细说明:
S303、响应于接收到的操作b结束,桌面应用生成启动地图应用指令。
具体地,手机的显示屏显示界面4,界面4包括多任务界面(参见图16中的界面203)。多任务界面包括地图应用的缩略界面,地图应用的缩略界面中显示地图应用的截图(参见图16中的界面203中地图应用的缩略界面2031用于显示地图应用的截图)。用户在多任务界面中地图应用的缩略界面执行操作b,显示屏接收操作b。其中,操作b为对地图应用的缩略界面的点击操作。显示屏向桌面应用发送操作b,以触发桌面应用执行渲染管控操作。
需要说明的是,手机接收到用户在多任务界面对地图应用的界面的点击操作结束时,手机热启动地图应用。其中,热启动是指应用在已经启动的(后台运行)状态下再次启动。
可以理解的是,手机显示的多任务界面包括多任务界面中每个应用的截图。参见图16中界面203所示的多任务界面,包括相机应用的截图(如图16中界面203中2032)和地图应用的截图(如图16中界面203中2031)。其中,相机应用的截图为相机应用前台运行结束时的最后一帧送显图像。
具体地,响应于接收到的用户在多任务界面对地图应用的缩略界面执行的操作b结束,桌面应用生成启动地图应用指令。启动地图应用指令可以用于指示窗口服务添加地图应用的启动窗口及指示地图应用的各组件创建对应的线程。
示例性的,启动地图应用可以用于指示地图应用视图组件创建地图画像线程,以及指示地图应用关键组件创建主画像线程。
S304、桌面应用向窗口服务发送启动地图应用指令。
示例性的,桌面应用调用启动应用statActivityFromRecents()函数,向窗口服务发送启动地图应用指令。
S305、响应于接收到启动地图应用指令,窗口服务添加地图应用窗口,并从内存中读取地图应用的截图。
具体地,响应于接收到启动地图应用指令,手机执行地图应用的启动应用的动效。这时。窗口服务可以添加地图应用的启动窗口,并从内存中读取地图应用的截图。
可以理解的是,手机执行启动应用的动效的过程中,地图应用的启动窗口用于显示地图应用的截图。
示例性的,窗口服务调用获取截图startactivity()函数,读取地图应用的截图。调用添加窗口addStartingWindow()函数,添加地图应用的启动窗口。
S306、窗口服务向地图应用关键组件发送启动地图应用指令和地图应用的截图。
具体地,响应于获取到地图应用的截图,窗口服务向地图应用发送启动地图应用指令和地图应用的截图,启动地图应用指令用于指示地图应用关键组件创建主画像线程,完成地图应用的启动操作。
S307、响应于接收到启动地图应用指令,地图应用关键组件创建图层,生成渲染任务2。
具体地,响应于接收到启动地图应用指令,地图应用关键组件创建主画像线程,主画像线程用于创建地图应用的图层,并生成主画像的渲染任务2。
示例性的,地图应用关键组件调用创建图层relayoutWindow.doFrame()函数创建图层。
S308、地图应用关键组件向GPU发送渲染任务2和地图应用的截图,渲染任务2指示渲染主画像。
具体地,地图应用关键组件逐帧向GPU发送主画像的渲染任务2,以指示GPU渲染主画像。
S309、响应于接收到渲染任务2,GPU渲染主画像。
具体地,响应于接收到地图应用关键组件发送的主画像的渲染任务2,GPU执行渲染任务2,以渲染得到地图应用的主画像。
S310、窗口服务向地图应用视图组件发送启动地图应用指令。
具体地,窗口服务向地图应用视图组件发送启动地图应用指令,以指示地图应用视图组件创建地图画像线程。
S311、响应于接收到启动地图应用指令,地图应用视图组件创建地图图像线程。
具体地,响应于接收到启动地图应用指令,地图应用视图组件创建地图图像线程。地图图像线程用于生成地图图像的渲染任务1。
示例性的, 地图应用视图组件可以调用绘制地图drawMap()函数,向GPU发送渲染任务1。
S312、响应于地图应用窗口添加完成,桌面应用向地图应用视图组件发送暂停渲染指令3,暂停渲染指令3指示暂停渲染地图画像。
具体地,响应于地图应用窗口添加完成,手机执行启动应用的动效,并在地图应用窗口显示地图应用的截图。桌面应用可以向地图应用视图组件发送暂停渲染指令3,使得手机在执行启动应用的动效的过程中,GPU可以不执行地图图像的渲染任务1,避免了因地图图像过于复杂引起的GPU阻塞的问题。
示例性的,桌面应用可以调用暂停渲染pauseRendering()函数,向地图应用视图组件发送暂停渲染指令3。
可以理解的是,桌面应用不向地图应用关键组件发送暂停渲染指令。也就是说,在手机执行启动应用的动效的过程中,GPU可以执行启动应用的动效的渲染任务4以及地图应用的主画像的渲染任务2。由于地图应用的主画像并不复杂,不会引起GPU阻塞的问题。因此,启动应用的动效不会出现卡顿现象。
在一些实施例中,暂停渲染指令3还包括管控时长3。在地图应用视图组件暂停向GPU发送渲染任务1的时长达到管控时长3时,桌面应用可以向地图应用发送恢复渲染指令,以控制地图应用视图组件向GPU发送渲染任务1。
S313、响应于接收到暂停渲染指令3,地图应用视图组件暂停向GPU发送渲染任务1。
具体地,响应于接收到暂停渲染指令,地图应用视图组件暂停向GPU发送渲染任务1。
可以理解的是,地图应用视图组件暂停向GPU发送渲染任务1时,地图画像线程仍在逐帧生成渲染任务1。
在一些实施例中,地图应用视图组件可以在暂停向GPU发送渲染任务1后,将每帧渲染任务1丢弃,直至接收到恢复渲染指令。
在另一些实施例中,地图应用视图组件可以在暂停向GPU发送渲染任务2后,存储每帧的渲染任务2,直至接收到恢复渲染指令,再向GPU逐帧发送其存储的渲染任务2。
S314、响应于地图应用窗口添加完成,桌面应用向GPU发送渲染任务4,渲染任务4指示渲染启动应用的动效。
具体地,响应于地图应用窗口添加完成,桌面应用执行启动应用的动效,向GPU发送启动应用的动效的渲染任务4,以指示GPU渲染启动应用的动效。
示例性的,桌面应用可以调用开始动效IRemoteTransition:startAnimation()函数,执行启动应用的动效。
可以理解的是,步骤S306、步骤S310均是窗口服务在地图应用窗口添加完成之后执行的步骤,步骤S314为桌面应用响应于地图应用窗口添加完成之后执行的步骤。本实施例此处仅以先执行步骤S306,再执行步骤S310、步骤S314的顺序为例进行说明。在实际应用中。因此,步骤S306、步骤S310、步骤S314的执行顺序并不以图17为限制。同样的,与步骤S306关联的步骤S307-步骤S309、与步骤S310关联的步骤S311-S313,以及与步骤S314关联的步骤S315-S317的执行顺序也不以图17为限制。
S315、响应于接收到渲染任务4,GPU渲染启动应用的动效。
具体地,响应于接收到渲染任务4,GPU执行渲染启动应用的动效的渲染任务4,以渲染启动应用的动效。
可以理解的是,GPU执行渲染启动应用的动效的渲染任务4的同时,可以执行地图应用中主画像的渲染任务2。
S316、GPU向显示屏发送启动应用的动效。
具体地,GPU在执行渲染任务4,完成首帧启动应用的动效后,逐帧向显示屏发送启动应用的动效。
示例性的,响应于渲染完成首帧启动应用的动效,GPU向图像合成处理服务发送渲染后的启动应用的动效。图像合成处理服务将渲染后的启动应用的动效与地图应用的启动窗口(包括地图应用的截图)合成,得到界面4。
S317、显示屏显示界面5,界面5包括启动应用的动效。
具体地,响应于接收到启动应用的动效,显示屏显示界面5,界面5包括启动应用的动效,其中,启动应用的动效过程中,地图应用的启动窗口用于显示地图应用的截图。界面5可以参见图16中界面1501。其中界面1501中的15011为地图应用的启动窗口,显示有地图应用的截图。
S318、响应于渲染完成首帧主画像,GPU向窗口服务发送第一信息。
具体地,响应于GPU渲染完成首帧主画像, GPU向窗口服务发送首帧主画像已渲染完成的第一信息(finish draw)。第一信息用于提示窗口服务,地图应用关键组件可以出帧送显。
S319、GPU向显示屏发送主画像。
具体地,响应于GPU渲染完成首帧主画像,GPU可以逐帧向显示屏发送主画像。
可以理解的是,步骤S318、步骤S319均为GPU在渲染完成首帧主画像之后执行的步骤,本实施例此处仅以先执行步骤S318,再执行步骤S319的顺序为例进行说明。在实际应用中,步骤S318、步骤S319的执行顺序并不以图17为限制。
S320、显示屏显示界面6,界面6包括启动应用的动效和首帧主画像。
具体地,在启动应用的动效未结束时,响应于接收到首帧主画像,显示屏显示界面6,界面6包括启动应用的动效,启动应用的动效中包括地图应用的窗口(如图16中的1502),其中,地图应用的窗口包括地图应用中主画像。
S321、响应于接收到第一信息,窗口服务删除地图应用窗口及截图。
具体地,响应于接收到第一信息,窗口服务删除地图应用的启动窗口及截图。这样,手机的显示屏可以用于显示地图应用的缩略界面。
示例性的,窗口服务可以调用移除窗口removeStartingWindow()函数删除地图应用的截图。
S322、显示屏显示界面7,界面7包括地图应用的应用界面,地图应用的应用界面包括地图应用的主画像。
具体地,响应于启动应用的动效结束,显示屏显示界面7,界面7包括地图应用的应用界面,由于地图画像没有渲染完成,地图应用的应用界面中仅包括地图应用的主画像(如图16中界面1502所示)。
可以理解的是,在一些可能的情况中,启动应用的动效的结束时间可能在GPU渲染完成首帧主画像之前,本实施例此处仅以GPU渲染完成首帧主画像之后,启动应用的动效结束为例进行说明。在实际应用中,步骤S318、步骤S319、步骤S322的执行顺序并不以图17为限制。同样的,与步骤S318关联的步骤S320、S321的执行顺序也不以图17为限制。
S323、响应于启动应用的动效结束,桌面应用向地图应用视图组件发送恢复渲染指令3,恢复渲染指令3指示渲染地图画像。
具体的,响应于启动应用的动效结束,桌面应用暂停止向GPU发送渲染任务4。此时,GPU的负载减轻,桌面应用可以向地图应用视图组件发送恢复渲染指令3,以使地图应用视图组件向GPU发送渲染任务1,以指示GPU渲染地图画像。
示例性的,响应于启动应用的动效结束,桌面应用调用恢复渲染restoreRendering()函数,向地图应用视图组件发送恢复渲染指令3。桌面应用调用完成回调RemoteTransitionFinishedCallback::onTransitionFinished()函数,获取地图应用的应用界面。
可以理解的是,步骤S322、步骤S323均是启动应用的动效结束之后执行的步骤,本实施例仅以先执行步骤S322再执行步骤S323为例进行说明。在实际应用中,步骤S322、步骤S323的执行顺序并不以图17为限制。
应理解,在一些实施例中,步骤S323还可以是响应于桌面应用向地图应用视图组件发送暂停渲染指令3的时长b达到管控时长1时,桌面应用向地图应用视图组件发送恢复渲染指令3。其中,管控时长1指示启动应用的动效的执行时长。这样,手机可以实现对由多任务界面启动地图应用的启动过程中执行计时为管控时长1的渲染管控操作。
示例性的,启动应用的动效的执行时长为500ms,则管控时长1为500ms。在桌面应用向地图应用视图组件发送暂停渲染指令3的时长b达到500ms时,桌面应用向地图应用视图组件发送恢复渲染指令3。
S324、响应于接收到恢复渲染指令3,地图应用视图组件向GPU发送渲染任务1。
具体地,响应于接收到桌面应用发送的恢复渲染指令3,地图应用视图组件控制地图画像主线程向GPU发送渲染任务1。
结合前述内容可知,渲染任务1可以包括在接收到恢复渲染指令3之后,地图画像线程逐帧生成的所有渲染任务1。或者,渲染任务1可以包括在接收到暂停渲染指令3之后,地图画像线程生成的所有渲染任务1。
S325、响应于接收到渲染任务1,GPU渲染地图画像。
具体地,响应于接收到渲染任务1,GPU执行渲染任务1,以渲染地图应用的地图画像。
S326、GPU向显示屏发送地图画像。
具体地,响应于渲染完成首帧地图画像,GPU可以逐帧向显示屏发送地图画像。
S327、显示屏显示界面8,界面8包括地图应用的应用界面,地图应用的应用界面包括主画像和地图画像。
具体地,响应于接收到地图应用的地图画像和主画像,显示屏显示界面8,界面8包括地图应用的应用界面,地图应用的应用界面包括地图应用的主画像和地图画像,如图16中界面1503。
示例性的,在GPU渲染完成首帧地图画像时,地图应用视图组件可以调用窗口更新SurfaceView::updateSurface()函数对显示屏的显示界面进行更新,以显示界面8。
然而,在上述手机执行由多任务界面热启动地图应用的启动应用的动效中,对地图应用视图组件执行渲染管控流程的方案中,手机在GPU渲染完成首帧地图应用的主画像后,直接删除地图应用的截图,而手机对地图应用的地图应用视图组件进行渲染管控操作,直至启动应用的动效结束。这就导致,启动应用的动效结束后地图应用视图组件才开始向GPU发送渲染任务1,那么手机在显示地图应用的应用界面(如执行步骤S322)时,地图画像区域会出现透明的问题(如图16中界面1502所示)。
针对上述问题,本申请实施例提出一种渲染管控优化方法。手机可以在执行由多任务界面热启动地图应用的启动应用的动效中,仅暂停地图画像的渲染,并显示地图应用的截图。在上述启动应用的动效结束后,手机恢复地图画像的渲染。直至GPU渲染完成整个地图应用的应用界面后,手机删除地图应用的截图。
这样,手机在执行启动应用的动效的过程中对地图应用视图组件执行渲染管控操作,可以减轻GPU的负载,使启动应用的动效的显示流畅。同时,仅在启动应用的动效结束且地图应用的应用界面中所有内容(如包括主画像和地图画像)渲染完成之后,手机才删除地图应用的截图,避免了由多任务界面热启动地图应用的过程中,因对地图应用视图组件执行渲染管控操作而导致显示界面存在透明区域的问题。
下面仍以由多任务界面热启动地图应用为例,参见图18详细说明手机在执行启动应用的动效的过程中实现渲染管控优化方法的业务流程:
响应于用户在多任务界面(如图19中界面203)对地图应用图标的点击操作结束,桌面应用接收到启动地图应用事件。桌面应用向窗口服务发送启动地图应用指令。窗口服务响应于启动地图应用指令,添加地图应用窗口,并从内存获取地图应用截图。响应于地图应用窗口添加完成,窗口服务向桌面应用发送执行启动应用的动效的指令,以指示桌面应用向GPU发送启动应用的动效的渲染任务4。GPU执行渲染任务4并送显后,手机的显示界面可以参见图19中界面1801,其中,界面1801中的18011区域为地图应用窗口,用于显示地图应用截图。
同时,响应于地图应用窗口添加完成,桌面应用向地图应用关键组件和地图应用视图组件发送启动地图应用指令。接收到启动地图应用指令后,地图应用关键组件热启动并创建地图应用的主图像线程,地图应用的主图像线程创建地图应用的图层,向GPU发送主画像的渲染任务2,以渲染主画像。接收到启动地图应用指令后,地图应用视图组件创建地图应用中地图画像线程。
响应于地图应用窗口添加完成,桌面应用向地图应用视图组件发送暂停渲染指令3。接收到暂停渲染指令后,地图应用视图组件控制地图画像线程进入渲染管控状态,暂停向GPU发送地图画像的渲染任务1。在首帧主画像渲染完成时,地图应用的主画像线程向窗口服务发送第一信息。响应于接收到第一信息,窗口服务进入等待状态,直至接收到第二信息。这时,窗口服务并未删除地图应用截图,手机的显示界面参见图19中界面1802,界面1802中的18021为地图应用的缩略界面,用于显示地图应用截图。
响应于启动应用的动效结束,桌面应用向地图应用视图组件发送恢复渲染指令3。响应于接收到恢复渲染指令3,地图应用视图组件控制地图画像线程向GPU发送地图画像的渲染任务1。在GPU渲染完成首帧地图画像时,向窗口服务发送首帧地图画像渲染完成的第二信息。可以理解的是,此时GPU可以向显示屏送显(包括主画像和地图画像)。
窗口服务在接收到第一信息之后,又接收到第二信息时,才删除地图应用窗口及截图。这样,手机可以在地图应用窗口删除后,显示主画像和地图画像的地图应用的应用界面,参见图19中界面1803。
结合图18和图19可以看出,采用上述渲染管控优化流程,手机在执行启动应用的动效的过程中对地图应用视图组件执行渲染管控操作,也不会造成显示界面出现部分区域透明的问题。
下面结合图20详细说明手机在执行从多任务界面热启动地图应用的启动应用的动效的过程中,实现渲染管控优化方法的流程:
S303、响应于接收到的操作b结束,桌面应用生成启动地图应用指令。
S304、桌面应用向窗口服务发送启动地图应用指令。
S305、响应于接收到启动地图应用指令,窗口服务添加地图应用窗口,并从内存中读取地图应用的截图。
S306、窗口服务向地图应用关键组件发送启动地图应用指令和地图应用的截图。
S307、响应于接收到启动地图应用指令,地图应用关键组件创建图层,生成渲染任务2。
S308、地图应用关键组件向GPU发送渲染任务2和地图应用的截图,渲染任务2指示渲染主画像。
S309、响应于接收到渲染任务2,GPU渲染主画像。
S310、窗口服务向地图应用视图组件发送启动地图应用指令。
S311、响应于接收到启动地图应用指令,地图应用视图组件创建地图图像线程。
S312、响应于地图应用窗口添加完成,桌面应用向地图应用视图组件发送暂停渲染指令3,暂停渲染指令3指示暂停渲染地图画像。
S313、响应于接收到暂停渲染指令3,地图应用视图组件暂停向GPU发送渲染任务1。
S314、响应于地图应用窗口添加完成,桌面应用向GPU发送渲染任务4,渲染任务4指示渲染启动应用的动效。
S315、响应于接收到渲染任务4,GPU渲染启动应用的动效。
S316、GPU向显示屏发送启动应用的动效。
S317、显示屏显示界面5,界面5包括启动应用的动效。
S318、响应于渲染完成首帧主画像,GPU向窗口服务发送第一信息。
可以理解的是,上述步骤S303-步骤S318可以参见前文实施例中的相关描述,在此不再赘述。
S401、响应于接收到第一信息,窗口服务进入等待状态。
具体地,响应于接收到第一信息,窗口服务进入等待状态,直至窗口服务接收到首帧地图画像渲染完成的第二信息。
示例性的,窗口服务调用等待界面绘制完成waitSurfaceDrawFinished()函数进入等待状态,并接收第二信息。
S402、GPU向显示屏发送主画像。
具体地,响应于GPU渲染完成首帧主画像,GPU可以逐帧向显示屏发送主画像。
可以理解的是,步骤S318、步骤S402均为GPU在渲染完成首帧主画像之后执行的步骤,本实施例此处仅以先执行步骤S318,再执行步骤S402的顺序为例进行说明。在实际应用中,步骤S318、步骤S402的执行顺序并不以图18为限制。
S403、响应于启动应用的动效结束,显示屏显示界面9,界面9包括多任务界面和地图应用的截图。
具体地,响应于启动应用的动效结束,显示屏将界面切换为界面9,界面9包括多任务界面,多任务界面中地图应用的缩略界面用于显示地图应用的截图,多任务界面参见图19中界面1802,其中,18021为地图应用的缩略界面。
S404、响应于启动应用的动效结束,桌面应用向地图应用视图组件发送恢复渲染指令3。
可以理解的是,步骤S403和步骤S404均为响应于启动应用的动效结束后执行的步骤,在此仅以先执行步骤S403后执行步骤S404为例进行说明,并不构成对步骤S403、步骤S404执行顺序的限制。在实际应用中,也可以先执行步骤S404后执行步骤S403。
S405、响应于接收到恢复渲染指令3,地图应用视图组件向GPU发送渲染任务1。
S406、响应于接收到渲染任务1,GPU渲染地图画像。
S407、GPU向显示屏发送地图画像。
可以理解的是,上述步骤S404-步骤S407可以参见前文实施例中步骤S323-步骤S326的相关描述,在此不再赘述。
S408、响应于渲染完成首帧地图画像,GPU向窗口服务发送第二信息。
具体地,响应于渲染完成首帧地图画像,GPU向窗口服务发送第二信息,以指示窗口服务删除地图应用窗口及截图。
S409、响应于接收到第二信息,窗口服务删除地图应用窗口及截图。
具体地,响应于接收到第一信息和第二信息,窗口服务删除地图应用的窗口及地图应用的截图。这样,手机可以显示包括主画像及地图画像的地图应用的应用界面。
示例性的,图像合成处理服务可以调用界面绘制完成surfaceViewDrawFinished()函数删除地图应用窗口及截图。
S410、显示屏显示界面8,界面8包括地图应用的应用界面,地图应用的应用界面包括主画像和地图画像。
具体地,在接收到GPU发送的主画像和地图画像时,显示屏显示界面8,界面8包括地图应用的应用界面,参见图19中界面1803。
采用上述渲染管控优化流程,手机可以在执行启动应用的动效的过程中,暂停地图应用的地图应用视图组件向GPU发送渲染任务1,提高启动应用的动效的流畅性。手机在启动应用的动效结束后,退出对地图应用视图组件的渲染管控操作,并在GPU渲染完成地图应用首帧主画像及首帧地图画像之后,才删除地图应用的截图。这样,手机的显示界面可以显示渲染后完整的地图应用的应用界面,而不会出现部分区域透明的问题。
本申请另一些实施例提供了一种电子设备,该电子设备可以包括:存储器和一个或多个处理器。该存储器和处理器耦合。该存储器用于存储计算机程序代码,该计算机程序代码包括计算机指令。当处理器执行计算机指令时,电子设备可执行上述方法实施例中的各个步骤。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质包括计算机指令,当所述计算机指令在上述电子设备上运行时,使得该电子设备执行上述方法实施例中的各个步骤。
本申请实施例还提供一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行上述方法实施例中的各个步骤。
通过以上实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (17)

1.一种渲染方法,其特征在于,应用于电子设备,所述方法包括:
所述电子设备显示第一界面,所述第一界面包括所述电子设备中第一应用的应用信息;
所述电子设备检测到在所述第一界面中的目标事件,所述目标事件用于触发所述电子设备显示第一动效,所述第一动效的画面内容包括所述第一应用的应用画面;
响应于所述目标事件结束,在第一时间区间内,所述电子设备不渲染所述第一应用的应用画面,基于第一图像渲染所述第一动效,所述第一图像包括所述第一应用结束在所述电子设备的前台运行时的截图或者所述目标事件结束时所述第一应用的应用画面;
响应于所述第一动效结束或者所述第一时间区间的时间长度达到第一时长,所述电子设备渲染所述第一应用的应用画面。
2.根据权利要求1所述的方法,其特征在于,不渲染所述第一应用的应用画面,包括:
所述电子设备控制所述第一应用的界面视图Surface View组件不向所述电子设备中的图形处理器GPU发送第一渲染任务。
3.根据权利要求1所述的方法,其特征在于,所述第一界面包括所述电子设备中第一应用的应用信息,具体为:所述第一界面包括在所述前台运行的所述第一应用的应用界面;
其中,所述目标事件包括从所述第一界面的底部向上滑动的事件,所述第一图像包括从所述第一界面的底部向上滑动的事件结束时所述第一应用的应用画面。
4.根据权利要求3所述的方法,其特征在于,在所述响应于所述第一动效结束或者所述第一时间区间的时间长度达到第一时长,所述电子设备渲染所述第一应用的应用画面,包括:
在第一时刻,所述电子设备将所述第一应用从前台切换到后台,所述电子设备不渲染所述第一应用的应用画面。
5.根据权利要求1-4中任一项所述的方法,其特征在于,所述第一界面包括所述电子设备中第一应用的应用信息,具体为:所述第一界面包括在所述电子设备的后台运行的所述第一应用的缩略界面;
其中,所述目标事件包括对所述第一应用的缩略界面的点击事件,所述第一图像包括所述第一应用结束在所述电子设备的前台运行时的截图。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
在所述第一时间区间内:所述电子设备控制所述第一应用的主线程向GPU发送第二渲染任务,在响应于所述第二渲染任务渲染得到第一帧图像之后,所述电子设备不删除所述第一图像;
所述基于第一图像渲染所述第一动效,包括:基于未被删除的所述第一图像渲染所述第一动效。
7.根据权利要求1-4中任一项所述的方法,其特征在于,所述响应于所述目标事件结束,在第一时间区间内,所述电子设备不渲染所述第一应用的应用画面,基于第一图像渲染所述第一动效,包括:
在确定管控名单包括所述第一应用的情况下,响应于所述目标事件结束,在第一时间区间内,所述电子设备不渲染所述第一应用的应用画面,基于第一图像渲染所述第一动效。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
在确定所述管控名单不包括所述第一应用的情况下,响应于所述目标事件结束,在所述第一时间区间内,所述电子设备渲染所述第一应用的应用画面,基于所述第一应用的应用画面渲染所述第一动效。
9.根据权利要求1-4中任一项所述的方法,其特征在于,在所述目标事件结束之前,所述方法还包括:
响应于检测到在所述第一界面中的目标事件,在第二时间区间内,所述电子设备不渲染所述第一应用的应用画面,基于第二图像渲染所述第一动效,所述第二图像包括检测到所述目标事件时所述第一应用的图像。
10.根据权利要求9所述的方法,其特征在于,在所述响应于检测到在所述第一界面中的目标事件,在第二时间区间内,所述电子设备不渲染所述第一应用的应用画面,基于第二图像渲染所述第一动效之后,所述方法还包括:
响应于所述第二时间区间的时间长度达到第二时长,且所述目标事件未结束,所述电子设备渲染所述第一应用的应用画面,基于所述第一应用的应用画面渲染所述第一动效。
11.根据权利要求1-4中任一项所述的方法,其特征在于,所述方法还包括:
在所述第一时间区间内,所述电子设备显示第二界面,所述第二界面包括所述第一动效,所述第一动效包括所述第一图像;其中,在所述第一时间区间内,所述第一图像的图像内容保持不变。
12.根据权利要求1-4中任一项所述的方法,其特征在于,所述电子设备检测到在所述第一界面中的目标事件,包括:
所述电子设备中的桌面应用检测到在所述第一界面中的目标事件;
所述响应于所述目标事件结束,在第一时间区间内,所述电子设备不渲染所述第一应用的应用画面,基于第一图像渲染所述第一动效,包括:
响应于所述目标事件结束,所述桌面应用向所述第一应用的界面视图Surface View组件发送第一指令,所述桌面应用向所述电子设备的图像处理器GPU发送第二指令;
响应于所述第一指令,在所述第一时间区间内,所述第一应用的界面视图SurfaceView组件不向GPU发送第一渲染任务;
响应于所述第二指令,在所述第一时间区间内,所述GPU基于所述第一图像渲染所述第一动效。
13.根据权利要求12所述的方法,其特征在于,所述第一指令包括所述第一时长;
响应于所述第一动效结束或者所述第一时间区间的时间长度达到第一时长,所述电子设备渲染所述第一应用的应用画面,包括:
响应于所述第一动效结束,所述桌面应用向所述第一应用的界面视图Surface View组件发送第三指令;响应于所述第三指令,所述第一应用的界面视图Surface View组件向所述GPU发送第一渲染任务;或者,
响应于所述第一时间区间的时间长度达到所述第一时长,所述电子设备向所述第一应用的界面视图Surface View组件发送第四指令;响应于所述第四指令,所述第一应用的界面视图Surface View组件向所述GPU发送第一渲染任务。
14.根据权利要求6所述的方法,其特征在于,所述在所述第一时间区间内:所述电子设备控制所述第一应用的主线程向所述GPU发送第二渲染任务,在响应于所述第二渲染任务渲染得到第一帧图像之后,所述电子设备不删除所述第一图像,包括:
在所述第一时间区间内:所述电子设备向所述第一应用的主线程发送第五指令;响应于所述第五指令,所述第一应用的主线程向所述GPU发送第二渲染任务;
在响应于所述第二渲染任务渲染得到第一帧图像之后,所述电子设备不删除所述第一图像。
15.一种电子设备,其特征在于,所述电子设备包括存储器和一个或多个处理器;所述存储器和所述处理器耦合;所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,当所述计算机指令被所述处理器执行时,使得所述电子设备执行如权利要求1-14中任一项所述的方法。
16.一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,其特征在于,当所述计算机指令在电子设备上运行时,使得所述电子设备执行如权利要求1-14中任一项所述的方法。
17.一种计算机程序产品,包括计算机指令,其特征在于,当所述计算机程序产品在电子设备上运行时,使得电子设备执行如权利要求1-14中任一项所述的方法。
CN202410416817.0A 2024-04-08 2024-04-08 一种渲染方法及电子设备 Pending CN118092728A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410416817.0A CN118092728A (zh) 2024-04-08 2024-04-08 一种渲染方法及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410416817.0A CN118092728A (zh) 2024-04-08 2024-04-08 一种渲染方法及电子设备

Publications (1)

Publication Number Publication Date
CN118092728A true CN118092728A (zh) 2024-05-28

Family

ID=91147788

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410416817.0A Pending CN118092728A (zh) 2024-04-08 2024-04-08 一种渲染方法及电子设备

Country Status (1)

Country Link
CN (1) CN118092728A (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106649725A (zh) * 2016-12-22 2017-05-10 前海节事科技(深圳)有限公司 一种页面切换方法及装置
CN116980719A (zh) * 2022-11-09 2023-10-31 腾讯科技(深圳)有限公司 一种视频开启方法、装置及计算机可读存储介质

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106649725A (zh) * 2016-12-22 2017-05-10 前海节事科技(深圳)有限公司 一种页面切换方法及装置
CN116980719A (zh) * 2022-11-09 2023-10-31 腾讯科技(深圳)有限公司 一种视频开启方法、装置及计算机可读存储介质

Similar Documents

Publication Publication Date Title
US9582849B2 (en) Method and system to virtualize graphic processing services
US9069455B2 (en) 3D user interface for application entities
WO2020038168A1 (zh) 内容分享方法、装置、终端及存储介质
CN107301038B (zh) 应用生产设备、系统、方法和非临时性计算机可读媒介
EP3912015B1 (en) Interactive carry
KR20160120343A (ko) 크로스 플랫폼 렌더링 엔진
WO2017167126A1 (zh) 一种窗口显示方法、信息交互方法及系统
KR20120132560A (ko) 그래픽스 처리 시스템의 오프-스크린 표면을 위한 멀티-버퍼 지원
TW201706834A (zh) 應用程式與虛擬機器通訊連接的系統與方法
CN109445891B (zh) 画面组态及展示方法、装置、计算机可读存储介质
US20190080017A1 (en) Method, system, and device that invokes a web engine
WO2022022132A1 (zh) 画面更新方法、装置、计算机设备和存储介质
EP3628096A1 (en) System and method for dynamic transparent scaling of content display
CN111679738A (zh) 一种屏幕切换方法、装置、电子设备及存储介质
CN118092728A (zh) 一种渲染方法及电子设备
US8203567B2 (en) Graphics processing method and apparatus implementing window system
CN111402349B (zh) 渲染方法、渲染装置和渲染引擎
CN108184054B (zh) 一种用于智能终端拍摄图像的预处理方法及预处理装置
CN117557701A (zh) 一种图像渲染方法和电子设备
US6256048B1 (en) Two-dimensional virtual camera
CN112631796A (zh) 一种显示设备及文件拷贝进度的展示方法
CN113271497B (zh) 一种视频播放方法、智能终端、存储介质及程序产品
CN116095250B (zh) 用于视频裁剪的方法和装置
RU2748857C1 (ru) Способ отображения ярлыка запуска приложений или иного функционала на экране информационной системы различного назначения
CN116719587B (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