CN117667278A - 一种界面显示方法、设备及系统 - Google Patents
一种界面显示方法、设备及系统 Download PDFInfo
- Publication number
- CN117667278A CN117667278A CN202211056295.5A CN202211056295A CN117667278A CN 117667278 A CN117667278 A CN 117667278A CN 202211056295 A CN202211056295 A CN 202211056295A CN 117667278 A CN117667278 A CN 117667278A
- Authority
- CN
- China
- Prior art keywords
- interface
- rendering
- node
- static
- displayed
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 146
- 238000009877 rendering Methods 0.000 claims abstract description 511
- 230000003068 static effect Effects 0.000 claims abstract description 354
- 230000008859 change Effects 0.000 claims abstract description 98
- 230000015654 memory Effects 0.000 claims description 35
- 238000004590 computer program Methods 0.000 claims description 13
- 230000002194 synthesizing effect Effects 0.000 claims description 6
- 230000008569 process Effects 0.000 abstract description 40
- 230000006870 function Effects 0.000 description 38
- 238000004891 communication Methods 0.000 description 34
- 230000006854 communication Effects 0.000 description 34
- 238000012545 processing Methods 0.000 description 24
- 239000000872 buffer Substances 0.000 description 22
- 238000010586 diagram Methods 0.000 description 22
- 238000007726 management method Methods 0.000 description 14
- 230000005236 sound signal Effects 0.000 description 13
- 238000010295 mobile communication Methods 0.000 description 12
- 230000015572 biosynthetic process Effects 0.000 description 10
- 238000003786 synthesis reaction Methods 0.000 description 10
- 230000003287 optical effect Effects 0.000 description 6
- 230000000007 visual effect Effects 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 238000013528 artificial neural network Methods 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 4
- 230000001172 regenerating effect Effects 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 239000000203 mixture Substances 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 229920001621 AMOLED Polymers 0.000 description 2
- 230000003416 augmentation Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 239000002131 composite material Substances 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000013138 pruning Methods 0.000 description 2
- 239000002096 quantum dot Substances 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000007175 bidirectional communication Effects 0.000 description 1
- 238000013529 biological neural network Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 210000000988 bone and bone Anatomy 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000005484 gravity Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000001939 inductive effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000010985 leather Substances 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 230000005855 radiation Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003238 somatosensory effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Human Computer Interaction (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本申请提供了一种界面显示方法、设备及系统,该方法包括基于待显示界面的界面信息,从渲染树中确定静态子树;渲染树用于渲染得到当前界面,静态子树包括不变节点,待显示界面中不更新的内容对应的节点包括不变节点;将静态子树更新为静态节点;静态节点包括静态子树中每个节点的数据;根据界面信息,更新渲染树中变化节点的数据;变化节点为渲染树中除静态节点外的节点;根据更新后的渲染树绘制待显示界面;显示绘制后的待显示界面。该方法可以有效降低界面显示过程中的功耗。
Description
技术领域
本申请实施例涉及终端技术,尤其涉及一种界面显示方法、设备及系统。
背景技术
目前,大部分电子设备均可以提供和用户实现交互的用户界面(user interface,UI)。电子设备显示用户界面的过程可以包括:电子设备中的中央处理器(centralprocessing unit,CPU)对界面的显示内容进行绘制,将绘制指令转换为渲染指令,例如OpenGL指令等;再将渲染指令提交给图形处理器(graphics processing unit,GPU),由GPU进行渲染,得到渲染结果;之后,由电子设备的合成模块将渲染结果进行合成后由显示屏显示为用户界面。
其中,电子设备上的用户界面显示影响设备续航的主要来源之一,如何降低界面显示过程中的功耗是业界的研究方向。
发明内容
本申请提供了一种界面显示方法、设备及系统,该方法可以通过确定界面对应的渲染树中的静态节点,进而,对渲染树进行裁剪和/或保存静态节点对应的渲染信息,从而可以有效降低在界面显示过程中的功耗。
第一方面,本申请实施例提供了一种界面显示方法,该方法包括:
基于待显示界面的界面信息,从渲染树中确定静态子树;渲染树用于渲染得到当前界面,静态子树包括不变节点,待显示界面中不更新的内容对应的节点包括不变节点;
将静态子树更新为静态节点;静态节点包括静态子树中每个节点的数据;
根据界面信息,更新渲染树中变化节点的数据;变化节点为渲染树中除静态节点外的节点;
根据更新后的渲染树绘制待显示界面;
显示绘制后的待显示界面。
本申请实施例中,电子设备可以基于待显示界面的界面信息,确定渲染树中的不变节点;基于不变节点确定静态子树;对渲染树进行裁剪,也就是将静态子树更新为静态节点;根据界面信息,更新渲染树中变化节点的数据;最后,根据更新后的渲染树绘制待显示界面,显示绘制后的待显示界面。
现有技术中,由于没有确定不变节点,也没有裁剪渲染树,因此,电子设备需要遍历整棵渲染树,逐一更新渲染树中每一个节点中的数据;在绘制过程中,需要逐一从渲染树中每一个节点中取出数据,造成极大功耗的浪费。而本申请实施例从渲染树中确定了数据没有发生变化的不变节点,因此电子设备在更新时不需要遍历整棵渲染树,仅需更新变化节点中的数据;由于对渲染树进行了裁剪,因此在绘制过程中,减少了逐一从每一个节点中取出数据时中遍历的节点个数和层数,可以极大的减少功耗。
结合第一方面,在一种可能的实施方式中,从渲染树中确定静态子树,包括:
将不更新的内容对应的节点的不变次数加一,得到更新后的不变次数;
将更新后的不变次数大于预设次数的节点确定为不变节点;
将相连的不变节点确定为静态子树。
本申请实施例中,电子设备可以更新不更新的界面内容对应的节点的不变次数,将更新后的不变次数大于预设次数的节点确定为不变节点;将相连的不变节点确定为静态子树。该方法将多次不变的节点确定为不变节点,从而确定静态子树,可以避免节点的偶尔不变造成裁剪过程中的功耗损失。
结合第一方面,在一种可能的实施方式中,静态子树包括根节点和至少一个子节点,将静态子树更新为静态节点,包括:
将至少一个子节点的数据更新到根节点;
从渲染树中去除至少一个子节点;
将根节点确定为静态节点。
本申请实施例中,将静态子树的数据均存放至该静态子树的根节点中,从而,在绘制过程中获取静态子树的数据时可以从该根节点中直接得到该静态子树中所有节点的数据,而不需逐一按照树结构逐一查询获取,可以减少绘制过程中获取节点数据时的功耗。
结合第一方面,在一种可能的实施方式中,根据更新后的渲染树绘制待显示界面,包括:
遍历更新后的渲染树,生成变化节点对应的第一渲染指令和静态节点对应的第二渲染指令;
执行第一渲染指令和第二渲染指令,得到待显示界面。
结合第一方面,在一种可能的实施方式中,方法还包括:
存储第二渲染指令;
在显示第一界面时,从存储单元中获取第二渲染指令;第一界面为待显示界面之后待显示的界面;静态节点对应的内容在显示第一界面时不需更新。
本申请实施例中,可以存储静态节点对应的第二渲染指令;从而,在下一次更新过程中若该静态节点仍未发生改变,则可以从存储单元中获取第二渲染指令。该方法可以减少生成第二渲染指令的功耗。
结合第一方面,在一种可能的实施方式中,根据更新后的渲染树绘制待显示界面,包括:
根据更新后的渲染树,获取变化节点对应的渲染指令和静态节点对应的静态渲染结果;
基于变化节点对应的渲染指令和静态渲染结果,得到目标渲染结果,目标渲染结果为待显示界面。
结合第一方面,在一种可能的实施方式中,方法还包括:
存储静态渲染结果;
在显示第一界面时,从存储单元中获取静态渲染结果;
第一界面为待显示界面之后待显示的界面;静态节点对应的内容在显示第一界面时不需更新。
本申请实施例中,可以存储静态节点对应的静态渲染结果;从而,在下一次更新过程中若该静态节点仍未发生改变,则可以从存储单元中获取静态渲染结果。该方法可以减少生成静态渲染结果的功耗。
结合第一方面,在一种可能的实施方式中,根据更新后的渲染树绘制待显示界面,包括:
遍历渲染树,生成变化节点对应的第一渲染结果和静态节点对应的第二渲染结果;
基于第一渲染结果,得到第一图层;
基于第二渲染结果,得到第二图层;
将第一图层和第二图层进行合成,得到目标图层,目标图层为待显示界面。
结合第一方面,在一种可能的实施方式中,方法还包括:
存储第二图层;
在显示第一界面时,从存储单元中获取第二图层;
第一界面为待显示界面之后待显示的界面;静态节点对应的内容在显示第一界面时不需更新。
本申请实施例中,生成静态节点对应的第二图层,进而,存储静态节点对应的第二图层;从而,在下一次更新过程中若该静态节点仍未发生改变,则可以从存储单元中获取第二图层。现有技术中,往往仅生成一个图层,该过程需要重复生成不变节点对应的显示内容,而本申请实施例通过生成并存储静态节点对应的第二图层,可以减少重复生成不变节点对应的显示内容的功耗。
结合第一方面,在一种可能的实施方式中,渲染树中除静态节点外的节点为变化节点;在遍历渲染树,绘制待显示界面之前,方法包括:
在变化节点中包括显示第二界面时更新的静态节点时,将第二界面更新的静态节点还原成第二界面时更新的静态节点对应的子树;第二界面为更新待显示界面之前更新的界面。
第二方面,本申请实施例提供了一种界面显示方法,该方法包括:
基于待显示界面的界面信息,从渲染树中确定不变节点,待显示界面中不更新的内容对应的节点包括不变节点;
根据界面信息,更新渲染树中变化节点的数据;变化节点为渲染树中除静态节点外的节点;
根据更新后的渲染树,得到变化节点对应的第一渲染信息和不变节点对应的第二渲染信息;
基于第一渲染信息和第二渲染信息,得到待显示界面。
本申请实施例可以生成不变节点对应的第二渲染信息,该不变节点对应的第二渲染信息可以用于在下一次更新过程中若该不变节点仍未发生改变时渲染界面。现有技术中,需要重复生成不变节点对应的渲染信息,而本申请实施例通过单独生成不变节点对应的渲染信息,可以减少重复生成不变节点对应的渲染信息的功耗。
结合第二方面,在一种可能的实施方式中,渲染信息包括渲染指令、渲染结果和图层中的任一种。
结合第二方面,在一种可能的实施方式中,不变节点对应的内容在显示第一界面时不需更新,第一界面为待显示界面之后待显示的界面;方法还包括:
存储第二渲染信息;
在显示第一界面时,从存储单元中获取第二渲染信息。
第三方面,本申请实施例提供了一种界面显示装置,该装置包括:
确定单元,用于基于待显示界面的界面信息,从渲染树中确定静态子树;渲染树用于渲染得到当前界面,静态子树包括不变节点,待显示界面中不更新的内容对应的节点包括不变节点;
更新单元,用于将静态子树更新为静态节点;静态节点包括静态子树中每个节点的数据;
更新单元,用于根据界面信息,更新渲染树中变化节点的数据;变化节点为渲染树中除静态节点外的节点;
绘制单元,用于根据更新后的渲染树绘制待显示界面;
显示单元,用于显示绘制后的待显示界面。
结合第三方面,在一种可能的实施方式中,确定单元用于:
将不更新的内容对应的节点的不变次数加一,得到更新后的不变次数;
将更新后的不变次数大于预设次数的节点确定为不变节点;
将相连的不变节点确定为静态子树。
结合第三方面,在一种可能的实施方式中,静态子树包括根节点和至少一个子节点,更新单元用于:
将至少一个子节点的数据更新到根节点;
从渲染树中去除至少一个子节点;
将根节点确定为静态节点。
结合第三方面,在一种可能的实施方式中,绘制单元用于:
遍历更新后的渲染树,生成变化节点对应的第一渲染指令和静态节点对应的第二渲染指令;
执行第一渲染指令和第二渲染指令,得到待显示界面。
结合第三方面,在一种可能的实施方式中,所述装置还包括存储单元,所述存储单元用于存储所述第二渲染指令;
所述绘制单元用于在显示第一界面时,从存储单元中获取第二渲染指令;第一界面为待显示界面之后待显示的界面;静态节点对应的内容在显示第一界面时不需更新。
结合第三方面,在一种可能的实施方式中,绘制单元用于:
根据更新后的渲染树,获取变化节点对应的渲染指令和静态节点对应的静态渲染结果;
基于变化节点对应的渲染指令和静态渲染结果,得到目标渲染结果,目标渲染结果为待显示界面。
结合第三方面,在一种可能的实施方式中,
所述存储单元用于存储所述静态渲染结果;
所述绘制单元用于在显示第一界面时,从存储单元中获取静态渲染结果;
第一界面为待显示界面之后待显示的界面;静态节点对应的内容在显示第一界面时不需更新。
结合第三方面,在一种可能的实施方式中,绘制单元用于:
遍历渲染树,生成变化节点对应的第一渲染结果和静态节点对应的第二渲染结果;
基于第一渲染结果,得到第一图层;
基于第二渲染结果,得到第二图层;
将第一图层和第二图层进行合成,得到目标图层,目标图层为待显示界面。
结合第三方面,在一种可能的实施方式中,
所述存储单元用于存储所述第二图层;
所述绘制单元用于在显示第一界面时,从存储单元中获取第二图层;
第一界面为待显示界面之后待显示的界面;静态节点对应的内容在显示第一界面时不需更新。
结合第三方面,在一种可能的实施方式中,渲染树中除静态节点外的节点为变化节点;更新单元,用于:
在变化节点中包括显示第二界面时更新的静态节点时,将第二界面更新的静态节点还原成第二界面时更新的静态节点对应的子树;第二界面为更新待显示界面之前更新的界面。
第四方面,本申请实施例提供了一种界面显示装置,该装置包括:
确定单元,用于基于待显示界面的界面信息,从渲染树中确定不变节点,待显示界面中不更新的内容对应的节点包括不变节点;
更新单元,用于根据界面信息,更新渲染树中变化节点的数据;变化节点为渲染树中除静态节点外的节点;
生成单元,用于根据更新后的渲染树,得到变化节点对应的第一渲染信息和不变节点对应的第二渲染信息;
绘制单元,用于基于第一渲染信息和第二渲染信息,得到待显示界面。
结合第四方面,在一种可能的实施方式中,渲染信息包括渲染指令、渲染结果和图层中的任一种。
结合第四方面,在一种可能的实施方式中,第一界面为待显示界面之后待显示的界面;存储单元,用于存储第二渲染信息;
绘制单元用于:
在显示第一界面时,从存储单元中获取第二渲染信息。
第五方面,本申请提供了一种计算机存储介质,包括计算机指令,当计算机指令在电子设备上运行时,使得电子设备执行上述第一方面或第一方面中任一可能的实现方式中的界面显示方法。
第六方面,本申请提供了一种计算机存储介质,包括计算机指令,当计算机指令在电子设备上运行时,使得电子设备执行上述第二方面或第二方面中任一可能的实现方式中的界面显示方法。
第七方面,本申请提供了一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行上述第一方面或第一方面中任一可能的实现方式中的界面显示方法。
第八方面,本申请提供了一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行上述第二方面或第二方面中任一可能的实现方式中的界面显示方法。
第九方面,本申请提供了一种芯片,包括:处理器和接口,所述处理器和接口相互配合,使得所述芯片执行上述第一方面或第一方面中任一可能的实现方式中的界面显示方法。
第十方面,本申请提供了一种芯片,包括:处理器和接口,所述处理器和接口相互配合,使得所述芯片执行上述第一方面或第一方面中任一可能的实现方式中的界面显示方法。
可以理解地,上述第三方面和第四方面提供的界面显示装置、第五方面和第六方面提供的计算机可读存储介质、第七方面和第八方面提供的计算机程序产品、第九方面和第十方面提供的芯片均用于执行本申请实施例所提供的方法。因此,其所能达到的有益效果可参考对应方法中的有益效果,此处不再赘述。
附图说明
图1A是本申请实施例提供的一种电子设备100的结构示意图;
图1B是本申请实施例提供的一种电子设备100的软件结构框图;
图1C是本申请提供的一种电子设备100的图形系统框架的示意图;
图2为本申请实施例提供的一种界面显示方法的流程图;
图3A至图3C是本申请提供的一些电子设备上的界面图;
图4是本申请实施例提供的一种确定静态子树的方法流程图;
图5A为本申请实施例提供的一种视图树的示意图;
图5B是本申请实施例提供的一种渲染树的示意图;
图6是本申请实施例提供的一种确定静态子树的示意图;
图7是本申请实施例提供的一种裁剪渲染树的示意图;
图8是本申请实施例提供的一种待显示界面的获取方法的流程图;
图9是本申请实施例提供的另一种待显示界面的获取方法的流程图;
图10是本申请实施例提供的又一种待显示界面的获取方法的流程图;
图11A是本申请实施例提供一种各线程执行界面显示方法的示意图;
图11B是本申请实施例提供一种代码逻辑示意图;
图12是本申请实施例提供的一种界面显示方法的流程图;
图13是本申请实施例提供的一种界面显示装置130的结构示意图;
图14是本申请实施例提供的一种界面显示装置140的结构示意图。
具体实施方式
下面将结合附图对本申请实施例中的技术方案进行清楚、详尽地描述。其中,在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;文本中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,另外,在本申请实施例的描述中,“多个”是指两个或多于两个。
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为暗示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。
本申请以下实施例中的术语“用户界面(user interface,UI)”,是应用程序或操作系统与用户之间进行交互和信息交换的介质接口,它实现信息的内部形式与用户可以接受形式之间的转换。用户界面是通过java、可扩展标记语言(extensible markuplanguage,XML)等特定计算机语言编写的源代码,界面源代码在电子设备上经过解析,渲染,最终呈现为用户可以识别的内容。用户界面常用的表现形式是图形用户界面(graphicuser interface,GUI),是指采用图形方式显示的与计算机操作相关的用户界面。它可以是在电子设备的显示屏中显示的文本、图标、按钮、菜单、选项卡、文本框、对话框、状态栏、导航栏、Widget等可视的界面元素。
首先,先介绍本申请实施例中的技术术语
1、垂直同步信号(vertical synchronization,VSync)
其中,VSync信号可同步显示流水线。显示流水线由应用渲染、合成进程(SurfaceFlinger)合成以及用于在屏幕上显示图像的硬件合成器(Hardware Composer,HWC)组成。VSync信号可同步应用唤醒以开始渲染的时间、SurfaceFlinger唤醒以合成屏幕的时间以及屏幕刷新周期。这种同步可以消除卡顿,并提升图形的视觉表现。
2、窗口或图层
每个应用程序可能有一个或多个窗口(window),每个window对应一个图层。图层:
在安卓(Android)图形架构中,使用生产者消费者模型来处理图像数据,其中图像缓冲队列是BufferQueue,队列中的元素是GraphicBuffer。
在生产者侧,生产者(例如Surface)可以使用OpenGL或Vulkan将像素(pixels)渲染到buffer上,有些使用画布渲染到buffer上。Surface是BufferQueue的生产者。
在消费者侧,图层称为layer,合成线程(SurfaceFlinger)是BufferQueue的消费者。SurfaceFlinger负责取出GraphicBuffer进行合成,最终将这些数据合成到帧缓存区(FrameBuffer)中,FrameBuffer的数据会提交到屏幕上显示。
作为一非限制性示例,以Android图形显示系统框架为例进行说明。
Android界面通常是由多个图层叠加,图层如导航栏、状态栏、前台应用、浮动窗口等。
Android系统中一个界面的显示需要经过界面绘制、界面渲染和合成显示等阶段。
窗口的显示处理流程,主要包括:在VSync信号到来后,中央处理器(centralprocessing unit,CPU)对每个应用界面的显示内容分别进行绘制,将绘制指令转换为渲染指令,例如OpenGL指令等;再将渲染指令提交给图形处理器(graphics processing unit,GPU),由GPU进行渲染,GPU把渲染结果提交到图像缓冲队列。下一次VSync信号到来时,由硬件合成器或GPU将图像缓冲队列的图层进行合成后,提交到帧缓冲区。视频控制器会按照VSync信号逐行读取帧缓冲区的数据,经过可能的数模转换传递给显示屏显示。
3、显示视图列表(displaylist):本质是一个缓存绘制命令的缓存区(buffer),记录了即将被执行的绘制命令序列,包含视图的属性(位置、尺寸、角度、透明度等)和画布(Canvas)对应的绘图接口函数。其中,Canvas用于提供绘图接口函数等应用编程接口(Application Programming Interface,API)供应用调用。
其中,API是由计算机程序代码实现的特定功能的封装和抽象表达,应用程序通过调用接口可以实现特定功能。
4、视图(view)
视图是用户界面的可视化组件,视图也称为控件(control)或部件(widget),典型的视图有按钮(button)、文本字段(text field)、进度条(Progress Bar)、键盘(keyboard)、图片、文字等。界面中的控件的属性和内容是通过标签或者节点来定义的,比如XML通过<Textview>、<ImgView>、<ButtonView>等节点来规定界面所包含的控件。一个节点对应界面中一个控件或属性,节点经过解析和渲染之后呈现为用户可视的内容。其中,节点经XML解析后,生成view的树状结构,即视图树(viewtree)。
本申请实施例提供的界面显示方法可以应用于电子设备上,电子设备包括但不限于手机、可穿戴设备、车载设备、增强现实(augmented reality,AR)/虚拟现实(virtualreality,VR)设备、笔记本电脑、超级移动个人计算机(ultra-mobile personalcomputer,UMPC)、上网本、平板电脑、智能音箱、电视机顶盒(set top box,STB)或电视等。本申请实施例对电子设备的具体类型不作任何限制。
图1A示例性示出了电子设备100的结构示意图。
下面以电子设备100为例对实施例进行具体说明。应该理解的是,电子设备100可以具有比图中所示的更多的或者更少的部件,可以组合两个或多个的部件,或者可以具有不同的部件配置。图中所示出的各种部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。
电子设备100可以包括:处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194以及用户标识模块(subscriber identification module,SIM)卡接口195等。
其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
可以理解的是,本申请实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
其中,控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
在一些实施例中,处理器110可以包括一个或多个接口。
接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuit sound,I2S)接口,脉冲编码调制(pulse codemodulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purpose input/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
I2C接口是一种双向同步串行总线,包括一根串行数据线(serial data line,SDA)和一根串行时钟线(derail clock line,SCL)。在一些实施例中,处理器110可以包含多组I2C总线。处理器110可以通过不同的I2C总线接口分别耦合触摸传感器180K,充电器,闪光灯,摄像头193等。例如:处理器110可以通过I2C接口耦合触摸传感器180K,使处理器110与触摸传感器180K通过I2C总线接口通信,实现电子设备100的触摸功能。
I2S接口可以用于音频通信。在一些实施例中,处理器110可以包含多组I2S总线。处理器110可以通过I2S总线与音频模块170耦合,实现处理器110与音频模块170之间的通信。在一些实施例中,音频模块170可以通过I2S接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。
PCM接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块170与无线通信模块160可以通过PCM总线接口耦合。在一些实施例中,音频模块170也可以通过PCM接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。所述I2S接口和所述PCM接口都可以用于音频通信。
UART接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,UART接口通常被用于连接处理器110与无线通信模块160。
例如:处理器110通过UART接口与无线通信模块160中的蓝牙模块通信,实现蓝牙功能。在一些实施例中,音频模块170可以通过UART接口向无线通信模块160传递音频信号,实现通过蓝牙耳机播放音乐的功能。
MIPI接口可以被用于连接处理器110与显示屏194,摄像头193等外围器件。MIPI接口包括摄像头串行接口(camera serial interface,CSI),显示屏串行接口(displayserial interface,DSI)等。在一些实施例中,处理器110和摄像头193通过CSI接口通信,实现电子设备100的拍摄功能。处理器110和显示屏194通过DSI接口通信,实现电子设备100的显示功能。
GPIO接口可以通过软件配置。GPIO接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,GPIO接口可以用于连接处理器110与摄像头193,显示屏194,无线通信模块160,音频模块170,传感器模块180等。GPIO接口还可以被配置为I2C接口,I2S接口,UART接口,MIPI接口等。
SIM接口可以被用于与SIM卡接口195通信,实现传送数据到SIM卡或读取SIM卡中数据的功能。
USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为电子设备100充电,也可以用于电子设备100与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如AR设备等。
可以理解的是,本申请实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本申请另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。
电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,显示屏194,摄像头193,和无线通信模块160等供电。
电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块150可以提供应用在电子设备100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。
移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。
低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170A,受话器170B等)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。
无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。
所述无线通信技术可以包括全球移动通讯系统(global system for mobilecommunications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(code division multiple access,CDMA),宽带码分多址(wideband codedivision multiple access,WCDMA),时分码分多址(time-division code divisionmultiple access,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(global navigation satellite system,GLONASS),北斗卫星导航系统(beidou navigation satellite system,BDS),准天顶卫星系统(quasi-zenithsatellite system,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。
电子设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,电子设备100可以包括1个或N个显示屏194,N为大于1的正整数。
电子设备100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
ISP用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给ISP处理,转化为肉眼可见的图像。
ISP还可以对图像的噪点,亮度,肤色进行算法优化。ISP还可以对拍摄场景的曝光,色温等参数优化。
在一些实施例中,ISP可以设置在摄像头193中。
摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,电子设备100可以包括1个或N个摄像头193,N为大于1的正整数。
数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。这样,电子设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。
NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现电子设备100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行电子设备100的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用(比如人脸识别功能,指纹识别功能、移动支付功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如人脸信息模板数据,指纹信息模板等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universalflash storage,UFS)等。
电子设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170可以设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。
扬声器170A,也称“喇叭”,用于将音频电信号转换为声音信号。电子设备100可以通过扬声器170A收听音乐,或收听免提通话。
受话器170B,也称“听筒”,用于将音频电信号转换成声音信号。当电子设备100接听电话或语音信息时,可以通过将受话器170B靠近人耳接听语音。
麦克风170C,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风170C发声,将声音信号输入到麦克风170C。电子设备100可以设置至少一个麦克风170C。在另一些实施例中,电子设备100可以设置两个麦克风170C,除了采集声音信号,还可以实现降噪功能。在另一些实施例中,电子设备100还可以设置三个,四个或更多麦克风170C,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。
耳机接口170D用于连接有线耳机。耳机接口170D可以是USB接口130,也可以是3.5mm的开放移动电子设备平台(open mobile terminal platform,OMTP)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association of the USA,CTIA)标准接口。
压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。压力传感器180A的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器180A,电极之间的电容改变。电子设备100根据电容的变化确定压力的强度。当有触摸操作作用于显示屏194,电子设备100根据压力传感器180A检测所述触摸操作强度。电子设备100也可以根据压力传感器180A的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。例如:当有触摸操作强度小于第一压力阈值的触摸操作作用于短消息应用图标时,执行查看短消息的指令。当有触摸操作强度大于或等于第一压力阈值的触摸操作作用于短消息应用图标时,执行新建短消息的指令。
陀螺仪传感器180B可以用于确定电子设备100的运动姿态。在一些实施例中,可以通过陀螺仪传感器180B确定电子设备100围绕三个轴(即,x,y和z轴)的角速度。陀螺仪传感器180B可以用于拍摄防抖。示例性的,当按下快门,陀螺仪传感器180B检测电子设备100抖动的角度,根据角度计算出镜头模组需要补偿的距离,让镜头通过反向运动抵消电子设备100的抖动,实现防抖。陀螺仪传感器180B还可以用于导航,体感游戏场景。
气压传感器180C用于测量气压。在一些实施例中,电子设备100通过气压传感器180C测得的气压值计算海拔高度,辅助定位和导航。
磁传感器180D包括霍尔传感器。电子设备100可以利用磁传感器180D检测翻盖皮套的开合。在一些实施例中,当电子设备100是翻盖机时,电子设备100可以根据磁传感器180D检测翻盖的开合。进而根据检测到的皮套的开合状态或翻盖的开合状态,设置翻盖自动解锁等特性。
加速度传感器180E可检测电子设备100在各个方向上(一般为三轴)加速度的大小。当电子设备100静止时可检测出重力的大小及方向。还可以用于识别电子设备姿态,应用于横竖屏切换,计步器等应用。
距离传感器180F,用于测量距离。电子设备100可以通过红外或激光测量距离。在一些实施例中,拍摄场景,电子设备100可以利用距离传感器180F测距以实现快速对焦。
接近光传感器180G可以包括例如发光二极管(LED)和光检测器,例如光电二极管。发光二极管可以是红外发光二极管。电子设备100通过发光二极管向外发射红外光。电子设备100使用光电二极管检测来自附近物体的红外反射光。当检测到充分的反射光时,可以确定电子设备100附近有物体。当检测到不充分的反射光时,电子设备100可以确定电子设备100附近没有物体。电子设备100可以利用接近光传感器180G检测用户手持电子设备100贴近耳朵通话,以便自动熄灭屏幕达到省电的目的。接近光传感器180G也可用于皮套模式,口袋模式自动解锁与锁屏。
环境光传感器180L用于感知环境光亮度。电子设备100可以根据感知的环境光亮度自适应调节显示屏194亮度。环境光传感器180L也可用于拍照时自动调节白平衡。环境光传感器180L还可以与接近光传感器180G配合,检测电子设备100是否在口袋里,以防误触。
指纹传感器180H用于采集指纹。电子设备100可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。
温度传感器180J用于检测温度。在一些实施例中,电子设备100利用温度传感器180J检测的温度,执行温度处理策略。例如,当温度传感器180J上报的温度超过阈值,电子设备100执行降低位于温度传感器180J附近的处理器的性能,以便降低功耗实施热保护。在另一些实施例中,当温度低于另一阈值时,电子设备100对电池142加热,以避免低温导致电子设备100异常关机。在其他一些实施例中,当温度低于又一阈值时,电子设备100对电池142的输出电压执行升压,以避免低温导致的异常关机。
触摸传感器180K,也称“触控面板”。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180K用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180K也可以设置于电子设备100的表面,与显示屏194所处的位置不同。
按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信号输入。
马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。例如,作用于不同应用(例如拍照,音频播放等)的触摸操作,可以对应不同的振动反馈效果。作用于显示屏194不同区域的触摸操作,马达191也可对应不同的振动反馈效果。不同的应用场景(例如:时间提醒,接收信息,闹钟,游戏等)也可以对应不同的振动反馈效果。触摸振动反馈效果还可以支持自定义。
指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
SIM卡接口195用于连接SIM卡。SIM卡可以通过插入SIM卡接口195,或从SIM卡接口195拔出,实现和电子设备100的接触和分离。电子设备100可以支持1个或N个SIM卡接口,N为大于1的正整数。SIM卡接口195可以支持Nano SIM卡,Micro SIM卡,SIM卡等。同一个SIM卡接口195可以同时插入多张卡。所述多张卡的类型可以相同,也可以不同。SIM卡接口195也可以兼容不同类型的SIM卡。SIM卡接口195也可以兼容外部存储卡。电子设备100通过SIM卡和网络交互,实现通话以及数据通信等功能。
本实施例中,电子设备100可以通过处理器110执行所述界面显示方法,由显示屏194显示所述界面显示方法得到的待显示界面。
图1B为本申请实施例公开的一种电子设备100的软件结构框图。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将系统分为四层,从上至下分别为应用程序层,应用程序框架层,运行时(Runtime)和系统库,以及内核层。
应用程序层可以包括一系列应用程序包。
如图1B所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序(也可以称为应用)。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。
应用程序框架层包括一些预先定义的函数。
如图1B所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
电话管理器用于提供电子设备100的通信功能。例如通话状态的管理(包括接通,挂断等)。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话界面形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
运行时(Runtime)包括核心库和虚拟机。Runtime负责系统的调度和管理。
核心库包含两部分:一部分是编程语言(例如,jave语言)需要调用的功能函数,另一部分是系统的核心库。
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的编程文件(例如,jave文件)执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(例如:OpenGL ES),二维图形引擎(例如:SGL)等。
表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了二维(2-Dimensional,2D)和三维(3-Dimensional,3D)图层的融合。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。
三维图形处理库用于实现3D图形绘图,图像渲染,合成,和图层处理等。
2D图形引擎是2D绘图的绘图引擎。
内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动,虚拟卡驱动。
下面结合捕获拍照场景,示例性说明电子设备100软件以及硬件的工作流程。
当触摸传感器180K接收到触摸操作,相应的硬件中断被发给内核层。内核层将触摸操作加工成原始输入事件(包括触摸坐标,触摸操作的时间戳等信息)。原始输入事件被存储在内核层。应用程序框架层从内核层获取原始输入事件,识别该输入事件所对应的控件。以该触摸操作是触摸单击操作,该单击操作所对应的控件为相机应用图标的控件为例,相机应用调用应用框架层的接口,启动相机应用,进而通过调用内核层启动摄像头驱动,通过摄像头193捕获静态图像或视频。
需要说明的是,电子设备的操作系统可以为Android、iOS或鸿蒙(Harmony OS)等,此处不做限定。
图1C是本申请提供的一种电子设备100的图形系统框架的示意图。
如图1C所示,该图形系统框架分为图形绘制模块、图形渲染模块、图形显示模块。图形绘制模块位于应用程序层和应用框架层,图形绘制模块可以包括多个应用,如应用1、应用2和应用3等,每一个应用有其对应的图层管理器(surface)。
在应用界面更新时,图形绘制模块加载该应用定义的UI排布,对UI进行测量布局后构建该应用对应的渲染树,并将UI的绘制操作转换为OpenGL指令提交给图形渲染模块进行内存渲染。
其中,应用的图层管理器通过图形内存分配模块和内存管理模块申请内存,该内存用于存储该应用的图层。图形渲染模块执行渲染指令完成渲染任务。图形绘制模块将渲染完成后的图层提交到图形显示模块进行合成显示,例如由硬件合成器将渲染后的多个应用的图层进行合成后,通过帧缓冲驱动模块发送至显示模块,由显示模块发送至显示屏上显示。
请参考图2,图2为本申请实施例提供的一种界面显示方法的流程图。该方法可以由上述电子设备执行,该方法可以包括以下部分或全部步骤。
图2示例性示出了本申请实施例提供的界面显示方法流程。该界面显示方法可以包括以下部分或全部步骤:
S201、电子设备接收针对目标应用的用户操作,该用户操作用于更新该目标应用的界面。
在一些实施例中,电子设备显示目标应用程序的目标应用界面;用户在该目标应用界面上滑动等操作,相应的,电子设备接收针对该目标应用的用户操作。例如,该目标应用为华为视频,则用户可以点击该目标应用界面上的一个控件,以打开一个新界面。
本申请实施例涉及的应用程序,为能够实现某项或多项特定功能的计算机程序。通常,电子设备中可以安装多个应用程序。比如,相机应用、短信应用、彩信应用、各种邮箱应用等。
下文中提到的应用程序,可以是电子设备出厂时自带的应用程序,也可以是用户在使用电子设备的过程中从网络侧下载的应用程序,本申请实施例不限定。
请参见图3A至图3C,图3A至图3C是本申请提供的一些电子设备上的界面图。
图3A示例性示出了电子设备上显示多个应用时的用户界面。如图3A所示,该用户界面可包括多个应用,例如备忘录、信息、视频和通讯录等。可以理解的是,图3A仅仅示例性示出了电子设备的一个包括应用程序的用户界面,不应构成对本申请实施例的限定。
如图3A所示,当电子设备检测到作用于视频的用户操作时,响应于用户操作,电子设备可以显示如图3B所示的用户界面。该用户界面为本申请实施例示例性提供一个视频界面。
如图3B所示,用户可以通过手指在屏幕上向下滑动,以获取下一个界面内容。相应的,当电子设备检测到作用于屏幕的用户操作时,响应于用户操作,电子设备可以显示如图3C所示的用户界面。
S202、电子设备响应于该用户操作,获取待显示界面的界面信息。
在一些实施例中,该用户操作用于指示待显示界面;电子设备响应于用户操作,获取待显示界面的界面信息。其中,待显示界面的界面信息为待显示界面的显示内容,例如视频帧或文字信息等。例如,图3B所示的用户操作指示的即为图3C所示的用户界面。
在另一些实施例中,电子设备不执行步骤S201,电子设备可以定时或基于预设规则确定待显示界面,进而,执行步骤S203。例如,电子设备通过目标应用在接收到VSync信号后,确定待显示界面;又例如,电子设备在视频播放等应用主动发起的UI界面显示内容更新等事件,或者应用内动画动态更新显示内容等动画事件时,确定待显示界面。
S203、电子设备基于待显示界面的界面信息,从目标应用对应的渲染树中确定静态子树。
其中,目标应用对应的渲染树(RenderTree)中可以包括一个或多个子树,子树由渲染节点(RenderNode)组成;静态子树包括不变节点。需要说明的是,通常情况下,应用对应的渲染树可以包含上百个子树。
在一些实施例中,电子设备可以基于待显示界面的界面信息,确定渲染树中的节点本次更新的变化情况,该变化情况包括变化和未变化;基于本次更新的变化情况,更新节点的不变次数;若该节点的不变次数达到预设次数,则将该节点确定为不变节点;进而,基于不变节点,从渲染树中确定静态子树。
需要说明的是,由于本申请实施例中对界面进行更新的过程中是针对同一根节点的渲染树进行更新,根节点在渲染树更新过程中不变且所有操作都基于根节点开始,因此,尽管更新界面时,渲染树中的子节点的节点信息发生改变或者渲染树发生了剪裁,为方便表述,本申请实施例中依旧将根节点相同的渲染树表述为同一颗渲染树。
请参见图4,图4是本申请实施例提供的一种确定静态子树的方法流程图。该方法包括以下全部或部分步骤:
S2031、电子设备基于待显示界面的界面信息,将目标应用对应的视图树中变化的视图节点的状态标记为无效状态。
在一种实现中,电子设备可以通过绘制线程(UI Thread),基于待显示界面的界面信息,确定本次更新中没有变化的view节点和发生变化的view节点,例如,待显示界面中待更新内容对应的view节点即为发生变化的view节点,不用更新的内容对应的view节点即为没有变化的view节点;电子设备将变化的view节点及其父节点的状态标记为无效(invalidate)状态。
其中,无效状态用于指示该view节点在本次更新中发生变化。例如,在目标应用的预设规则中,若该界面信息包括view节点对应的显示内容时,则该view节点在本次更新中发生变化。
请参见图5A,图5A为本申请实施例提供的一种视图树的示意图。图5A示例性示出了UI Thread内目标应用对应的视图树(viewtree),该viewtree包括顶级视图(dectorview)、视图1(view1)和视图2(view2)等,那么,电子设备可以将没有变化的view节点的状态标记为无效状态。
S2032、电子设备基于视图节点的无效状态,更新视图节点对应的渲染节点的不变次数,其中,每个视图节点对应一个渲染节点。
其中,viewtree中的每个view节点与渲染树中的渲染节点一一对应。
请参见图5B,图5B是本申请实施例提供的一种渲染树的示意图。图5B示例性示出了图5A所示的viewtree对应的渲染树,图5A中的一个view对应图5B中一个渲染节点,如view1对应节点1,view2对应节点2,以此类推。
在一种实现中,电子设备在该view节点没有无效状态的标记时,更新该view节点对应的渲染节点的不变次数为原不变次数加1。例如,图5A中的view1、view3、view4和view5均标记为无效状态,则电子设备可以将图5B中的节点1、节点3、节点4和节点5的不变次数加1。
进一步的,电子设备还可以将有标记的view节点对应的渲染节点对应的不变次数清零。例如,例如图5B中的节点1对应的不变次数为2,节点2对应的不变次数为2,那么,在图5A中的view1没有标记而view2标记为无效状态后,电子设备可以将图5B中的节点1的不变次数更新为3;节点2的不变次数更新为0。
S2033、电子设备将不变次数达到预设次数的渲染节点确定为不变节点。
需要说明的是,此处对预设次数不做限制。
例如预设次数为3次,若节点5的不变次数更新后为3,则电子设备可以确定节点5为不变节点。
可以理解的,无效状态用于标记本次变化的节点和本次没有变化的节点;进而,电子设备从本次没有变化的节点中确定不变节点。
S2034、电子设备基于不变节点,确定静态子树。
其中,静态子树包括至少一个不变节点。
在一些实施例中,电子设备将连接的不变节点确定为静态子树。需要说明的是,若该不变节点未与其他不变节点连接,则电子设备也可以将该不变节点确定为静态子树。
请参见图6,图6是本申请实施例提供的一种确定静态子树的示意图。如图6所示,图6示例性示出了一颗渲染树,该渲染树包括根节点,以及节点1至节点8共九个节点。
假设本次更新中没有变化的view节点为节点4和节点5,则电子设备将节点4、节点5以及其父节点节点1均标记为无效状态;进而,将节点1、节点4和节点5的不变次数清零,将其他无标记的节点的不变次数加1;在更新该渲染树的节点的不变次数后,假设节点3和节点7的不变次数不满足预设次数,节点8、节点2和节点6的不变次数满足预设条件,则电子设备可以将节点8确定为第一静态子树,节点2和节点6确定为第二静态子树。
可选的,电子设备还可以在确定静态子树后,对静态子树进行标记。
S204、电子设备将静态子树更新为静态节点。
在一些实施例中,电子设备通过UI Thread更新渲染树的过程中,对标记的静态子树进行裁剪,即修改渲染树的结构,将静态子树修改为单个的叶子节点(即静态节点)。例如,渲染树包括n个静态子树,则电子设备可以将n个静态子树更新为n个静态节点,其中,n为正整数。
请参见图7,图7是本申请实施例提供的一种裁剪渲染树的示意图。
如图7所示,图7示例性示出了该渲染树(RenderNode Tee)的一个根节点(RenderNode Root)和其他6个节点,分别为节点1(RenderNode1)、节点2(RenderNode2)、节点3(RenderNode3)、节点4(RenderNode4)、节点5(RenderNode5)和节点6(RenderNode6),渲染树中每一个节点均有其对应的显示视图列表(displaylist)。其中,节点1、节点3、节点4和节点5为示例性示出的一个静态子树,电子设备可以将该静态子树更新为如图7所示的静态节点(即更新后的节点1),该静态节点中的displaylist包括节点1、节点3、节点4和节点5每一个displaylist中的内容。可以理解的,在静态子树包括多个节点时,将静态子树更新为静态节点,也即是将静态子树合并为静态节点。
在一种实现中,电子设备通过静态子树感知模块标记静态子树后,触发静态子树裁剪。具体的,电子设备可以使用静态子树的子树根节点的Canvas记录其他节点的绘制操作,即开始构建静态子树对应的静态节点的displaylist(BuildDisplaylist)。电子设备依次递归调用整颗静态子树每一个节点的draw函数,将每一个节点对应的UI绘制操作DrawOp记录到根节点的Canvas中,将根节点原来的Displaylist更新为新构造的Displaylist。
例如,电子设备通过UI Thread执行beginRecording取该静态子树的子树根节点的renderNode的canvas记录绘制操作,递归遍历整颗子树,将整颗子树的绘制操作(drawOp)记录在根节点中的displaylist中,也即是endRecording写入renderNode中的displaylist中。
其中,电子设备在渲染线程(RenderThread)依次遍历取出每个节点的drawOp的取出过程中,电子设备可以对实际有取出动作的节点进行计数加1;对没有实际取出动作的节点计数为0,供UI thread识别下一帧静态子树使用。需要说明的是,实际在屏幕上显示的view为有取出动作的节点,实际在屏幕上没有显示的view为没有取出动作的节点,该计数为绘制次数。
在一种实现中,电子设备可以先识别渲染树中的子树是否合并过且在本次更新中是否发生变化;若子树合并过且发生变化,则将该子树还原为合并前的子树;若该子树未合并过且当前未发生变化,则识别该子树是否为静态子树;在该子树为静态子树时将该静态子树更新为静态节点。
例如,电子设备可以通过UI Thread在流程UpdateDisplaylist中,使用识别函数(如ifDoRecreateDisplayList函数)识别子树是否合并过且在本次更新中是否发生变化,如果子树合并过且发生变化,则返回true,重新构建合并前的Displaylist后返回。如果子树没有合并过且没有发生变化,通过静态子树处理模块执行识别函数(ifDoMerge())识别子树是否需要进行合并,合并条件可以为:子树不变次数大于合并阈值。若该子树需要进行合并,则该子树为静态子树。
需要说明是,针对子树合并过但没有发生改变的情况以及子树没有合并过但发生变化的情况,不需要对这两种情况的子树进行识别是否需要进行合并。
其中,合并条件还可以为:子树不变次数大于触发合并阈值,且子树包含实际屏幕上显示的view。其中,电子设备可以将绘制次数大于预置帧数的view确定为屏幕实际显示的view。
在一些实施例中,电子设备可以不合并部分静态子树。例如,不变次数大于合并阈值的静态子树有两种形式,第一种静态子树包含屏幕实际显示的view;第二种静态子树内所有节点皆不在屏幕上显示,则电子设备可以将第一种静态子树更新为静态节点;不将第二种静态子树更新为静态节点。进而,电子设备可以标记第二种静态子树,以使电子设备在通过RenderThread遍历更新后的渲染树进行数据同步时,不遍历第二种静态子树,以此实现剪枝,减少遍历节点个数。
S205、电子设备基于待显示界面的界面信息,更新渲染树中的变化节点,变化节点为渲染树中除静态节点外的其他节点。
在一些实施例中,电子设备可以基于待显示界面,确定变化节点的绘制信息,该绘制信息可以包括绘制数据(如view对象的长宽、位置)和UI绘制操作(如绘制函数)等;进而,基于节点的绘制数据和UI绘制操作重新生成变化节点对应的displaylist。其中,一个节点对应一个displaylist;displaylist用于存储该节点对应的绘制信息;该view对象的长宽、位置等属性可以是UI Thread测量布局(Measure&layout)得到的。
S206、电子设备基于更新后的渲染树,得到待显示界面。
在一些实施例中,电子设备可以遍历更新后的渲染树,获取渲染指令集合,该渲染指令集合包括变化节点对应的渲染指令和静态节点对应的渲染指令;进而,电子设备基于渲染指令集合,绘制待显示界面。例如,使用SyncFrameState成员函数遍历渲染树,同步节点更新后的displaylist及节点的属性。进而,电子设备通过RenderThread对更新后的渲染树进行全树深度遍历,取出UI绘制操作(DrawOp)将其转换成OpenGL指令,提交到GPU;电子设备通过GPU基于OpenGL指令进行渲染,得到待显示界面。
在另一些实施例中,电子设备可以存储静态节点对应的渲染信息,例如渲染指令、渲染结果或图层等,以使电子设备在待显示界面的下一帧包括相同的静态节点时,可以从存储单元中获取静态节点对应的渲染信息,而不需要重新生成静态节点的渲染信息,从而实现复用渲染信息以减少功耗的目标。该实施例的具体内容可以参见以下图8至图10的实施例中的详细内容。
在一种实现中,电子设备先通过RenderThread遍历更新后的渲染树进行同步更新数据,进而,基于更新后的渲染树生成渲染指令;进而,电子设备通过GPU执行渲染指令,得到渲染结果;最后,电子设备通过合成线程获取该渲染结果,得到该目标应用对应的图层,即待显示界面。其中,在电子设备先通过RenderThread遍历更新后的渲染树同步更新数据时,电子设备可以不遍历标记的静态子树以减少遍历的节点。
S207、电子设备显示待显示界面。
在一些实施例中,电子设备在得到待显示界面后,通过电子设备的显示屏显示待显示界面。其中,电子设备还可以将待显示界面与其他应用的图层进行合成后,再通过显示屏显示合成后的界面。
在一些实施例中,电子设备可以在执行上述步骤S206时,可以通过图8所示的获取方法获取待显示界面。
请参考图8,图8为本申请实施例提供的一种待显示界面的获取方法的流程图。该方法可以由上述电子设备执行,该获取方法可以包括以下部分或全部步骤:
S301、电子设备遍历更新后的渲染树,获取渲染指令集合,该渲染指令集合包括变化节点对应的渲染指令。
其中,更新后的渲染树包括变化节点和静态节点,静态节点包括新增静态节点和历史静态节点中的至少一种;变化节点对应的渲染指令可以包括一个或多个变化节点对应的渲染指令;一个节点可以对应一个或多个渲染指令。其中,新增静态节点是指针对待显示界面确定的静态子树合并后的节点,待显示界面为本次要更新的界面;历史静态节点指的是,在历史更新过程时合并的节点且该节点在本次更新中没有变化,历史更新是指更新待显示界面之前的更新过程。
在一些实施例中,更新后的渲染树没有新增的静态节点,也就是,在本次更新中电子设备没有识别到本次新增的静态子树,因此没有新增静态节点,即电子设备没有执行S203和S204,则电子设备可以遍历更新后的渲染树,仅生成渲染树中变化节点对应的渲染指令。
例如,电子设备通过RenderThread,使用SyncFrameState成员函数遍历渲染树,同步更新后的节点的displaylist;进而,对更新后的渲染树进行全树深度遍历,取出更新后的渲染树中变化节点对应的绘制操作DrawOp,将其转换成渲染指令(如OpenGL指令),提交到GPU。可以理解的,由于该渲染树经过裁剪,因此在RenderThread中SyncFrameState同步渲染节点内容和Draw转换OpenGL指令两次渲染树的遍历中遍历层次和节点减少,去除了冗余的静态子树内节点的遍历。
在另一些实施例中,更新后的渲染树中包括新增静态节点,即电子设备针对待显示界面执行了步骤S203和S204,得到了新增静态节点,则电子设备可以遍历更新后的渲染树,生成变化节点对应的渲染指令和新增静态节点对应的渲染指令,得到渲染指令集合。
可以理解的,电子设备可以仅需要生成变化节点和本次确定的静态节点对应的渲染指令;历史静态节点的图层在历史更新过程中已经生成且保存。例如,电子设备通过Render Thread同步更新后的渲染树中节点的displaylist后,对更新后的渲染树进行全树深度遍历,取出变化节点和新增静态节点中每一个节点对应的绘制操作DrawOp,将其转换成渲染指令(如OpenGL指令),提交到GPU。
S302、电子设备基于变化节点对应的渲染指令,得到变化节点对应的第一图层。
其中,图层为合成线程(如SurfaceFlinger)中的layer。
在一种实现中,电子设备通过GPU基于变化节点的绘制数据和OpenGL指令,得到变化节点对应的渲染结果;进而,电子设备通过SurfaceFlinger获取变化节点对应的渲染结果,得到第一图层。需要说明的是,渲染结果为GPU中访问的界面数据;图层为SurfaceFlinger中访问的界面数据,界面数据为绘制后的待显示界面的显示数据;在本申请实施例中,GPU将界面数据绘制在两个图层,即第一图层和下文中所述的第二图层。其中,渲染结果和图层可以为位于GPU和SurfaceFlinger共享的共享内存(如GraphicBufferQueue)上的界面数据。
S303、电子设备获取静态节点对应的第二图层。
在一些实施例中,更新后的渲染树中的静态节点均为本次更新的静态节点,则电子设备基于第二渲染指令,生成静态节点对应的第二图层。例如,电子设备可以通过SurfaceFlinger添加一层Layer(即第二图层),用于缓存静态子树组成的合成结果。
在另一些实施例中,更新后的渲染树中的静态节点均为历史静态节点,则电子设备从存储单元中获取静态节点对应的第二图层。
其中,第二图层可以包括一个或多个静态节点对应的图层;第二图层可以包括新增静态节点对应的图层和/或历史静态节点对应的图层;第二图层也可以为新增静态节点对应的图层和历史静态节点对应的图层合并后的图层。
在又一些实施例中,更新后的渲染树中的静态节点包括本次更新的静态节点和历史静态节点,则电子设备可以从存储单元中获取历史静态节点对应的图层;基于第二渲染指令生成本次更新的静态节点对应的图层;最后,得到第二图层,该第二图层包括历史静态节点对应的图层和本次更新的静态节点对应的图层。
S304、电子设备存储静态节点对应的第二图层。
在一些实施例中,电子设备在生成静态节点对应的第二图层后,存储静态节点对应的第二图层。例如,电子设备在基于新增静态节点对应的渲染指令,生成该静态节点对应的第二图层后,存储该第二图层。在一种实现中,第二图层为一个图层。
例如,电子设备可以将所有静态节点对应的内容绘制在第二图层上,进而存储该第二图层。也就是说,电子设备可以对静态子树组成的区域的合成结果做缓存。可以理解的,若下一帧界面中未有新增的静态子树,则电子设备可以从存储单元中获取上述第二图层,而不需要重新生成上述第二图层,可以去除每帧重复绘制渲染过程中的功耗。
在另一种实现中,第二图层可以为一个或多个图层。例如,电子设备可以将一个或多个静态节点对应的内容绘制在不同的图层,存储该不同的图层。那么,若上述静态节点中的部分节点在下一帧界面中还原为静态节点,则电子设备可以从存储单元中获取上述第二图层中未还原的图层,而不需要重新生成上述未还原的图层,可以减小绘制渲染过程中的功耗。例如,电子设备基于多个静态节点,生成第一静态节点对应的图层a,第二静态节点对应的图层b和第三静态节点对应的图层c,电子设备存储图层a、图层b和图层c;若下一帧界面更新时,第一静态节点和第二静态节点被还原为变化节点,第三静态节点未被还原,则电子设备可以从存储单元中获取图层c,而不需要重新生成图层c。
S305、电子设备基于第一图层和第二图层,得到待显示界面。
在一些实施例中,电子设备在通过SurfaceFlinger将第一图层和第二图层进行合成,得到待显示界面。
需要说明的是,在一些实施例中,该待显示界面对应的渲染树中没有新增静态节点,则电子设备可以从存储单元中获取第二图层,且可以不执行上述步骤S304。
在另一些实施例中,电子设备可以在执行上述步骤S206时,可以通过图9所示的获取方法获取待显示界面。请参考图9,图9为本申请实施例提供的另一种待显示界面的获取方法的流程图。该方法可以由上述电子设备执行,该获取方法可以包括以下部分或全部步骤:
S401、电子设备遍历更新后的渲染树,得到变化节点对应的渲染指令。
其中,电子设备生成渲染指令的具体内容可以参见上文中的相关描述,此处不再赘述。
S402、电子设备在更新的渲染树包括新增静态节点时,生成新增静态节点对应的渲染指令。
在一些实施例中,电子设备在通过Renderthread Draw遍历渲染树生成OpenGL指令时,只重新生成有变化子树的指令和新增的静态节点对应的渲染指令。
S403、电子设备在更新的渲染树包括历史静态节点时,从存储单元中获取历史静态节点对应的渲染指令。
S404、电子设备存储新增静态节点对应的渲染指令。
在一些实施例中,电子设备存储新增静态节点对应的渲染指令。例如,对整颗静态子树的OpenGL指令(即静态节点对应的渲染指令)进行缓存供待显示界面后更新的界面使用。
在一种实现中,电子设备通过RenderThread Draw取出DrawOp转换成OpenGL指令过程中,可以将标记过的静态子树(即静态节点)的DrawCall(渲染指令)使用新的Oplist进行缓存,在下一帧绘制的时候将缓存的Oplist与当前帧的GrRenderTargetOplist(绘制操作列表)合并成一个,达到指令复用的目的。需要说明的是,该步骤发生在RenderThread流程DrawContentDrawOp转换成OpenGL指令过程中,代码在skia库源码。
S405、电子设备基于渲染指令集合进行渲染,得到待显示界面,渲染指令集合包括变化节点对应的渲染指令和静态节点对应的渲染指令,静态节点包括新增静态节点和历史静态节点中的至少一种。
在一种实现中,电子设备通过GPU基于绘制指令生成的渲染管线,对内存区域(如GraphicBuffer)进行渲染,得到渲染结果,进而得到待显示界面。
在另一些实施例中,电子设备可以在执行上述步骤S206时,可以通过图10所示的获取方法获取待显示界面。请参考图10,图10为本申请实施例提供的又一种待显示界面的获取方法的流程图。该方法可以由上述电子设备执行,该获取方法可以包括以下部分或全部步骤:
S501、电子设备基于更新后的渲染树,获取变化节点对应的渲染指令。
在一些实施例中,更新后的渲染树没有新增静态节点,则电子设备遍历更新后的渲染树,生成变化节点对应的渲染指令。
在另一些实施例中,渲染指令集合还可以包括新增静态节点对应的渲染指令。可以理解的是,若更新后的渲染树没有新增的静态节点,则渲染指令集合仅包括变化节点对应的渲染指令;若更新后的渲染树有新增的静态节点,则电子设备可以生成新增静态节点对应的渲染指令,也就是说,渲染指令集合包括变化节点对应的渲染指令和新增静态节点对应的渲染指令。
S502、电子设备获取静态节点对应的静态渲染结果。
其中,静态渲染结果包括新增静态节点对应的渲染结果和/或历史静态节点对应的渲染结果。
在一些实施例中,更新后的渲染树中的静态节点均为新增静态节点,则电子设备基于新增静态节点对应的渲染指令,生成新增静态节点对应的渲染结果,得到静态渲染结果。例如,电子设备通过GPU基于静态节点的绘制数据和OpenGL指令,在静态缓存区上进行渲染,得到静态节点的静态渲染结果。
在另一些实施例中,更新后的渲染树中的静态节点均为历史静态节点,则电子设备从存储(如上述静态缓存区)中获取历史静态节点对应的渲染结果,得到静态渲染结果。
在又一些实施例中,更新后的渲染树中的静态节点包括新增静态节点和历史静态节点,则电子设备可以基于新增静态节点对应的渲染指令,生成新增静态节点对应的渲染结果;从存储单元中获取历史静态节点对应的渲染结果,得到静态渲染结果,该静态渲染结果包括新增静态节点对应的渲染结果和历史静态节点对应的渲染结果。
S503、电子设备存储静态节点对应的静态渲染结果。
在一些实施例中,电子设备存储的是新增静态节点对应的渲染结果。
例如,电子设备通过GPU将静态节点对应的界面数据渲染到额外申请的buffer中,在GPU侧将渲染后的buffer存储在GPU侧内存上,或使用硬件的System Cache资源,将buffer放到System Cache上提高GPU访问效率。需要说明的是,此优化修改可以发生RenderThread流程指令下发和在GPU侧的驱动上。
S504、电子设备基于变化节点对应的渲染指令和静态渲染结果得到待显示界面。
其中,静态渲染结果包括新增静态节点对应的渲染结果和历史静态节点对应的渲染结果中的至少一项。
在一些实施例中,电子设备可以通过GPU使用变化节点的渲染指令和静态节点的静态渲染结果渲染出待显示界面。例如,电子设备通过GPU执行变化节点的渲染指令,得到变化节点对应的渲染结果;将静态渲染结果叠加到变化节点对应的渲染结果上,得到待显示界面。
其中,静态渲染结果可以以纹理贴图的方式叠加到变化节点对应的渲染结果上。
例如,电子设备可以通过GPU将变化节点对应的渲染结果存放在GraphicBufferQueue上,通过GPU将静态渲染结果存放在GPU侧内存上;进而,电子设备通过GPU将静态渲染结果以纹理贴图的方式叠加到变化节点对应的渲染结果上,得到叠加后的渲染结果;最后,电子设备通过合成线程从GraphicBuffer Queue上获取待显示界面,该待显示界面为叠加后的渲染结果。
为方便理解上述图2至图10所示的实施例,以下结合图11A介绍电子设备中各个线程执行的步骤。
请参见图11A,图11A是本申请实施例提供一种各线程执行界面显示方法的示意图。
如图11A所示,在应用界面更新时,绘制线程(UI Thread)对待显示界面进行测量布局;基于待显示界面感知静态子树(即步骤S203);进而,裁剪渲染树(即步骤S204);进而,更新显示视图列表(即步骤S205)。
渲染线程(RenderThread)从绘制线程中同步更新后的渲染树,基于更新后的渲染树生成渲染指令;将该渲染指令发送至GPU。GPU基于渲染指令进行渲染,得到渲染结果并放置到图形缓冲队列(GraphicBufferQueue)中。图层合成进程(SurfaceFlinger)从缓冲队列中获取渲染结果,得到待显示界面对应的图层(即待显示界面);将该待显示界面与其他图层合成后发送至显示模块进行显示。
需要说明的是,图11A中三个虚线框为可选的执行步骤,且三个步骤不同时执行。在三个步骤不执行时,也即是该界面显示方法中步骤不采用渲染信息复用;在渲染线程执行缓存静态节点对应的渲染指令时,即该界面显示方法中步骤中采用图9所示的获取方法;在GPU执行缓存静态节点渲染结果时,即该界面显示方法中步骤中采用图10所示的获取方法;在图层合成线程执行缓存静态节点对应的图层时,即该界面显示方法中步骤中采用图8所示的获取方法。
为方便理解上述图2至图10所示的实施例,以下结合图11B从代码逻辑上介绍本申请实施例提供的界面显示方法。
如图11B所示,电子设备在开始绘制应用界面时,在更新该界面对应的每个节点的显示列表的过程中,先从该界面对应的渲染树中确定是否有需要还原的节点,若有则还原该节点对应的子树,构建该子树原本的显示列表;若无则从渲染树中确定是否有变化节点。若是变化节点,则更新该变化节点的显示列表;若不是变化节点,则从节点中识别静态子树,统计节点的不变次数和绘制次数。进而,基于统计节点的不变次数和绘制次数确定是否触发合并,若该子树符合合并要求(即为静态子树)则合并该子树的显示列表,更新该子树根节点的显示列表。其中,合并静态子树的显示列表的过程包括子树根节点开始记录绘制操作,记录当前节点的绘制操作的过程中判断是否该节点为静态子树的最后一个节点;若不是最后一个节点则依次记录下一个子节点。直至最后一个节点则结束记录绘制操作,即结束合并显示列表。
电子设备在结束更新显示列表后,触发渲染线程开始同步更新后的渲染树,在非首次同步静态节点时进行遍历剪枝;然后开始绘制,遍历渲染节点生成渲染指令,并记录绘制的次数。渲染线程将渲染指令发送至GPU。之后,可以由合成线程进行图层合成后,发送至显示模块进行显示。
请参考图12,图12为本申请实施例提供的一种界面显示方法的流程图。该方法可以由上述电子设备执行,该方法可以包括以下部分或全部步骤。
图12示例性示出了本申请实施例提供的界面显示方法流程。该界面显示方法可以包括以下部分或全部步骤:
S601、电子设备接收针对目标应用的用户操作,该用户操作用于更新该目标应用的界面。
具体可以参见步骤S201中的相关内容,此处不再赘述。
S602、电子设备响应于该用户操作,获取待显示界面的界面信息。
具体可以参见步骤S201中的相关内容,此处不再赘述。
S603、电子设备基于待显示界面的界面信息,从目标应用对应的渲染树中确定不变节点。
在一些实施例中,电子设备可以基于待显示界面,确定渲染树中的节点本次更新的变化情况,该变化情况包括变化和未变化;基于本次更新的变化情况,更新节点的不变次数;若该节点的不变次数达到预设次数,则将该节点确定为不变节点。
例如,电子设备可以执行上述步骤S2031至S2033以确定不变节点。
S604、电子设备基于待显示界面的界面信息,更新渲染树中的变化节点,变化节点为渲染树中除不变节点外的其他节点。
具体可以参见步骤S205中的相关内容,此处不再赘述。
S605、电子设备分别获取变化节点对应的第一渲染信息和不变节点对应的第二渲染信息,其中,渲染信息可以包括渲染指令、渲染结果和图层中的一项。
在一种实现中,渲染信息为渲染指令,则电子设备可以生成变化节点对应的渲染指令;在不变节点中包括新增不变节点时,生成新增不变节点对应的渲染指令;在不变节点中包括历史不变节点时,从存储单元中获取不变节点对应的渲染指令。
其中,新增不变节点是指针对待显示界面确定的不变节点,待显示界面为本次要更新的界面;历史不变节点指的是,在历史更新过程时确定的不变节点且该节点在本次更新中没有变化,历史更新是指更新待显示界面之前的更新过程。
在另一种实现中,渲染信息为渲染结果,则电子设备可以生成变化节点对应的渲染结果;在不变节点中包括新增不变节点时,生成新增不变节点对应的渲染结果;在不变节点中包括历史不变节点时,从存储单元中获取不变节点对应的渲染结果。
在又一种实现中,渲染信息为图层,则电子设备可以生成变化节点对应的图层;在不变节点中包括新增不变节点时,生成新增不变节点对应的图层;在不变节点中包括历史不变节点时,从存储单元中获取不变节点对应的图层。
S606、电子设备存储不变节点对应的第二渲染信息。
S607、电子设备基于第一渲染信息和第二渲染信息,得到待显示界面。
其中,电子设备基于第一渲染信息和第二渲染信息得到待显示界面的具体内容可以参见上文中图8至图10的实施例中的详细内容。
S608、电子设备显示待显示界面。
具体可以参见步骤S207中的相关内容,此处不再赘述。
上述详细阐述了本申请实施例的方法,下面提供了本申请实施例的装置。
请参见图13,图13是本申请实施例提供的一种界面显示装置130的结构示意图,该装置130可以为电子设备。当然,该装置130也可以为电子设备中的一个器件,例如芯片或者集成电路等,该装置130可以包括确定单元1301、更新单元1302、绘制单元1303和显示单元1304。该界面显示装置130用于实现前述图12所示的任意一个实施例的界面显示方法。
在一种可能的实施方式中,确定单元1301,用于基于待显示界面的界面信息,从渲染树中确定静态子树;所述渲染树用于渲染得到当前界面,所述静态子树包括不变节点,所述待显示界面中不更新的内容对应的节点包括所述不变节点;
更新单元1302,用于将所述静态子树更新为静态节点;所述静态节点包括所述静态子树中每个节点的数据;
所述更新单元1302,用于根据所述界面信息,更新所述渲染树中变化节点的数据;所述变化节点为所述渲染树中除所述静态节点外的节点;
绘制单元1303,用于根据更新后的渲染树绘制所述待显示界面;
显示单元1304,用于显示绘制后的待显示界面。
在一种可能的实施方式中,所述确定单元1301用于:
将所述不更新的内容对应的节点的不变次数加一,得到更新后的不变次数;
将更新后的不变次数大于预设次数的节点确定为所述不变节点;
将相连的所述不变节点确定为所述静态子树。
在一种可能的实施方式中,所述静态子树包括根节点和至少一个子节点,所述更新单元1302用于:
将所述至少一个子节点的数据更新到所述根节点;
从所述渲染树中去除所述至少一个子节点;
将所述根节点确定为所述静态节点。
在一种可能的实施方式中,所述绘制单元1303用于:
遍历所述更新后的渲染树,生成所述变化节点对应的第一渲染指令和所述静态节点对应的第二渲染指令;
执行所述第一渲染指令和所述第二渲染指令,得到所述待显示界面。
在一种可能的实施方式中,所述装置还包括存储单元1305,所述存储单元1305用于存储所述第二渲染指令;
所述绘制单元1303用于:在显示第一界面时,从所述存储单元中获取所述第二渲染指令;所述第一界面为所述待显示界面之后待显示的界面;所述静态节点对应的内容在显示所述第一界面时不需更新。
在一种可能的实施方式中,所述绘制单元1303用于:
根据所述更新后的渲染树,获取所述变化节点对应的渲染指令和所述静态节点对应的静态渲染结果;
基于所述变化节点对应的渲染指令和所述静态渲染结果,得到目标渲染结果,所述目标渲染结果为所述待显示界面。
在一种可能的实施方式中,
所述装置还包括存储单元1305,所述存储单元1305用于存储所述静态渲染结果;
所述绘制单元1303用于:在显示所述第一界面时,从所述存储单元中获取所述静态渲染结果;
所述第一界面为所述待显示界面之后待显示的界面;所述静态节点对应的内容在显示所述第一界面时不需更新。
在一种可能的实施方式中,所述绘制单元1303用于:
遍历所述渲染树,生成变化节点对应的第一渲染结果和所述静态节点对应的第二渲染结果;
基于所述第一渲染结果,得到第一图层;
基于所述第二渲染结果,得到第二图层;
将所述第一图层和所述第二图层进行合成,得到目标图层,所述目标图层为所述待显示界面。
在一种可能的实施方式中,
所述装置还包括存储单元1305,所述存储单元1305用于存储所述第二图层;
所述绘制单元1303用于:在显示所述第一界面时,从所述存储单元中获取所述第二图层;
所述第一界面为所述待显示界面之后待显示的界面;所述静态节点对应的内容在显示所述第一界面时不需更新。
在一种可能的实施方式中,所述渲染树中除静态节点外的节点为变化节点;所述更新单元1302,用于:
在所述变化节点中包括显示第二界面时更新的静态节点时,将所述第二界面更新的静态节点还原成第二界面时更新的静态节点对应的子树;所述第二界面为更新所述待显示界面之前更新的界面。
需要说明的是,各个单元的实现还可以对应参照图2所示的实施例的相应描述。该界面显示装置130可以为图2所示实施例中的电子设备。
可以理解的,本申请各个装置实施例中,对多个单元或者模块的划分仅是一种根据功能进行的逻辑划分,不作为对装置具体的结构的限定。在具体实现中,其中部分功能模块可能被细分为更多细小的功能模块,部分功能模块也可能组合成一个功能模块,但无论这些功能模块是进行了细分还是组合,装置130在配对的过程中所执行的大致流程是相同的。通常,每个单元都对应有各自的程序代码(或者程序指令),这些单元各自对应的程序代码在处理器上运行时,使得该单元受处理器的控制而执行相应的流程从而实现相应功能。
请参见图14,图14是本申请实施例提供的一种界面显示装置140的结构示意图,该装置140可以为一个电子设备。当然,该装置140也可以为电子设备中的一个器件,例如芯片或者集成电路等,该装置140可以包括确定单元1401、更新单元1402、生成单元1403、存储单元1404和绘制单元1405。该界面显示装置140用于实现图12所示的界面显示方法。
在一种可能的实施方式中,确定单元1401,用于基于待显示界面的界面信息,从渲染树中确定不变节点,所述待显示界面中不更新的内容对应的节点包括所述不变节点;
更新单元1402,用于根据所述界面信息,更新所述渲染树中变化节点的数据;所述变化节点为所述渲染树中除所述静态节点外的节点;
生成单元1403,用于根据所述更新后的渲染树,得到所述变化节点对应的第一渲染信息和所述不变节点对应的第二渲染信息;
绘制单元1405,用于基于所述第一渲染信息和所述第二渲染信息,得到所述待显示界面。
在一种可能的实施方式中,所述渲染信息包括渲染指令、渲染结果和图层中的任一种。
在一种可能的实施方式中,存储单元1404,用于存储所述第二渲染信息;
所述绘制单元1405用于:在显示第一界面时,从所述存储单元1404中获取所述第二渲染信息;所述第一界面为所述待显示界面之后待显示的界面。
需要说明的是,各个单元的实现还可以对应参照图12所示的实施例的相应描述。该界面显示装置140可以为图12所示实施例中的电子设备。
本申请实施例还提供了一种电子设备,电子设备包括一个或多个处理器和一个或多个存储器;其中,一个或多个存储器与一个或多个处理器耦合,一个或多个存储器用于存储计算机程序代码,计算机程序代码包括计算机指令,当一个或多个处理器执行计算机指令时,使得电子设备执行上述实施例描述的方法。
本申请实施例还提供了一种包含指令的计算机程序产品,当计算机程序产品在电子设备上运行时,使得电子设备执行上述实施例描述的方法。
本申请实施例还提供了一种计算机可读存储介质,包括指令,当指令在电子设备上运行时,使得电子设备执行上述实施例描述的方法。
可以理解的是,本申请的各实施方式可以任意进行组合,以实现不同的技术效果。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请所述的流程或功能。
所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk)等。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:ROM或随机存储记忆体RAM、磁碟或者光盘等各种可存储程序代码的介质。
总之,以上所述仅为本申请技术方案的实施例而已,并非用于限定本申请的保护范围。凡根据本申请的揭露,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (29)
1.一种界面显示方法,其特征在于,所述方法包括:
基于待显示界面的界面信息,从渲染树中确定静态子树;所述渲染树用于渲染得到当前界面,所述静态子树包括不变节点,所述待显示界面中不更新的内容对应的节点包括所述不变节点;
将所述静态子树更新为静态节点;所述静态节点包括所述静态子树中每个节点的数据;
根据所述界面信息,更新所述渲染树中变化节点的数据;所述变化节点为所述渲染树中除所述静态节点外的节点;
根据更新后的渲染树绘制所述待显示界面;
显示绘制后的待显示界面。
2.根据权利要求1所述的方法,其特征在于,所述从渲染树中确定静态子树,包括:
将所述不更新的内容对应的节点的不变次数加一,得到更新后的不变次数;
将更新后的不变次数大于预设次数的节点确定为所述不变节点;
将相连的所述不变节点确定为所述静态子树。
3.根据权利要求1或2所述的方法,其特征在于,所述静态子树包括根节点和至少一个子节点,将所述静态子树更新为静态节点,包括:
将所述至少一个子节点的数据更新到所述根节点;
从所述渲染树中去除所述至少一个子节点;
将所述根节点确定为所述静态节点。
4.根据权利要求1-3任一项所述的方法,其特征在于,根据更新后的渲染树绘制所述待显示界面,包括:
遍历所述更新后的渲染树,生成所述变化节点对应的第一渲染指令和所述静态节点对应的第二渲染指令;
执行所述第一渲染指令和所述第二渲染指令,得到所述待显示界面。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
存储所述第二渲染指令;
在显示第一界面时,获取存储的所述第二渲染指令;所述第一界面为所述待显示界面之后待显示的界面;所述静态节点对应的内容在显示所述第一界面时不需更新。
6.根据权利要求1-3任一项所述的方法,其特征在于,根据更新后的渲染树绘制所述待显示界面,包括:
根据所述更新后的渲染树,获取所述变化节点对应的渲染指令和所述静态节点对应的静态渲染结果;
基于所述变化节点对应的渲染指令和所述静态渲染结果,得到目标渲染结果,所述目标渲染结果为所述待显示界面。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
存储所述静态渲染结果;
在显示所述第一界面时,获取存储的所述静态渲染结果;
所述第一界面为所述待显示界面之后待显示的界面;所述静态节点对应的内容在显示所述第一界面时不需更新。
8.根据权利要求1-3任一项的方法,其特征在于,根据更新后的渲染树绘制所述待显示界面,包括:
遍历所述渲染树,生成所述变化节点对应的第一渲染结果和所述静态节点对应的第二渲染结果;
基于所述第一渲染结果,得到第一图层;
基于所述第二渲染结果,得到第二图层;
将所述第一图层和所述第二图层进行合成,得到目标图层,所述目标图层为所述待显示界面。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
存储所述第二图层;
在显示所述第一界面时,获取存储的所述第二图层;
所述第一界面为所述待显示界面之后待显示的界面;所述静态节点对应的内容在显示所述第一界面时不需更新。
10.根据权利要求1-9任一项所述的方法,其特征在于,在遍历所述渲染树,绘制所述待显示界面之前,所述方法包括:
当所述变化节点中包括历史静态节点时,将所述历史静态节点还原成所述历史静态节点对应的子树;所述历史静态节点为显示第二界面时确定的静态节点;所述第二界面为所述待显示界面之前显示的界面。
11.一种界面显示方法,其特征在于,所述方法包括:
基于待显示界面的界面信息,从渲染树中确定不变节点,所述待显示界面中不更新的内容对应的节点包括所述不变节点;
根据所述界面信息,更新所述渲染树中变化节点的数据;所述变化节点为所述渲染树中除所述静态节点外的节点;
根据所述更新后的渲染树,得到所述变化节点对应的第一渲染信息和所述不变节点对应的第二渲染信息;
基于所述第一渲染信息和所述第二渲染信息,得到所述待显示界面。
12.根据权利要求11所述的方法,其特征在于,所述渲染信息包括渲染指令、渲染结果和图层中的任一种。
13.根据权利要求11或12所述的方法,其特征在于,所述第一界面为所述待显示界面之后待显示的界面;所述方法还包括:
存储所述第二渲染信息;
在显示所述第一界面时,获取存储的所述第二渲染信息。
14.一种界面显示装置,其特征在于,包括:
确定单元,用于基于待显示界面的界面信息,从渲染树中确定静态子树;所述渲染树用于渲染得到当前界面,所述静态子树包括不变节点,所述待显示界面中不更新的内容对应的节点包括所述不变节点;
更新单元,用于将所述静态子树更新为静态节点;所述静态节点包括所述静态子树中每个节点的数据;
所述更新单元,用于根据所述界面信息,更新所述渲染树中变化节点的数据;所述变化节点为所述渲染树中除所述静态节点外的节点;
绘制单元,用于根据更新后的渲染树绘制所述待显示界面;
显示单元,用于显示绘制后的待显示界面。
15.根据权利要求14所述的装置,其特征在于,所述确定单元用于:
将所述不更新的内容对应的节点的不变次数加一,得到更新后的不变次数;
将更新后的不变次数大于预设次数的节点确定为所述不变节点;
将相连的所述不变节点确定为所述静态子树。
16.根据权利要求14或15所述的装置,其特征在于,所述静态子树包括根节点和至少一个子节点,所述更新单元用于:
将所述至少一个子节点的数据更新到所述根节点;
从所述渲染树中去除所述至少一个子节点;
将所述根节点确定为所述静态节点。
17.根据权利要求14-16任一项所述的装置,其特征在于,所述绘制单元用于:
遍历所述更新后的渲染树,生成所述变化节点对应的第一渲染指令和所述静态节点对应的第二渲染指令;
执行所述第一渲染指令和所述第二渲染指令,得到所述待显示界面。
18.根据权利要求17所述的装置,其特征在于,所述装置还包括存储单元,所述存储单元用于存储所述第二渲染指令;
所述绘制单元用于在显示第一界面时,从所述存储单元中获取所述第二渲染指令;所述第一界面为所述待显示界面之后待显示的界面;所述静态节点对应的内容在显示所述第一界面时不需更新。
19.根据权利要求14-16任一项所述的装置,其特征在于,所述绘制单元用于:
根据所述更新后的渲染树,获取所述变化节点对应的渲染指令和所述静态节点对应的静态渲染结果;
基于所述变化节点对应的渲染指令和所述静态渲染结果,得到目标渲染结果,所述目标渲染结果为所述待显示界面。
20.根据权利要求19所述的装置,其特征在于,所述存储单元用于存储所述静态渲染结果;
所述绘制单元用于在显示所述第一界面时,从所述存储单元中获取所述静态渲染结果;
所述第一界面为所述待显示界面之后待显示的界面;所述静态节点对应的内容在显示所述第一界面时不需更新。
21.根据权利要求14-16任一项的装置,其特征在于,所述绘制单元用于:
遍历所述渲染树,生成变化节点对应的第一渲染结果和所述静态节点对应的第二渲染结果;
基于所述第一渲染结果,得到第一图层;
基于所述第二渲染结果,得到第二图层;
将所述第一图层和所述第二图层进行合成,得到目标图层,所述目标图层为所述待显示界面。
22.根据权利要求21所述的装置,其特征在于,所述存储单元用于存储所述第二图层;
所述绘制单元用于在显示所述第一界面时,从所述存储单元中获取所述第二图层;
所述第一界面为所述待显示界面之后待显示的界面;所述静态节点对应的内容在显示所述第一界面时不需更新。
23.根据权利要求14-22任一项所述的装置,其特征在于,所述渲染树中除静态节点外的节点为变化节点;所述更新单元,用于:
在所述变化节点中包括显示第二界面时更新的静态节点时,将所述第二界面更新的静态节点还原成第二界面时更新的静态节点对应的子树;所述第二界面为更新所述待显示界面之前更新的界面。
24.一种界面显示装置,其特征在于,所述装置包括:
确定单元,用于基于待显示界面的界面信息,从渲染树中确定不变节点,所述待显示界面中不更新的内容对应的节点包括所述不变节点;
更新单元,用于根据所述界面信息,更新所述渲染树中变化节点的数据;所述变化节点为所述渲染树中除所述静态节点外的节点;
生成单元,用于根据所述更新后的渲染树,得到所述变化节点对应的第一渲染信息和所述不变节点对应的第二渲染信息;
绘制单元,用于基于所述第一渲染信息和所述第二渲染信息,得到所述待显示界面。
25.根据权利要求24所述的装置,其特征在于,所述渲染信息包括渲染指令、渲染结果和图层中的任一种。
26.根据权利要求24或25所述的装置,其特征在于,所述第一界面为所述待显示界面之后待显示的界面;所述装置还包括存储单元;
所述存储单元用于存储所述第二渲染信息;
所述绘制单元用于:
在显示所述第一界面时,从所述存储单元中获取所述第二渲染信息。
27.一种电子设备,其特征在于,所述电子设备包括一个或多个处理器和一个或多个存储器;其中,所述一个或多个存储器与所述一个或多个处理器耦合,所述一个或多个存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,当所述一个或多个处理器执行所述计算机指令时,使得所述电子设备执行如权利要求1-13中任一项所述的方法。
28.一种包含指令的计算机程序产品,其特征在于,当所述计算机程序产品在电子设备上运行时,使得所述电子设备执行如权利要求1-13中任一项所述的方法。
29.一种计算机可读存储介质,包括指令,其特征在于,当所述指令在电子设备上运行时,使得所述电子设备执行如权利要求1-13中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211056295.5A CN117667278A (zh) | 2022-08-31 | 2022-08-31 | 一种界面显示方法、设备及系统 |
PCT/CN2023/110580 WO2024046010A1 (zh) | 2022-08-31 | 2023-08-01 | 一种界面显示方法、设备及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211056295.5A CN117667278A (zh) | 2022-08-31 | 2022-08-31 | 一种界面显示方法、设备及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117667278A true CN117667278A (zh) | 2024-03-08 |
Family
ID=90081331
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211056295.5A Pending CN117667278A (zh) | 2022-08-31 | 2022-08-31 | 一种界面显示方法、设备及系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN117667278A (zh) |
WO (1) | WO2024046010A1 (zh) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104517309B (zh) * | 2013-10-08 | 2018-08-24 | 博雅网络游戏开发(深圳)有限公司 | 帧循环中的动画处理方法和装置 |
CN103678631B (zh) * | 2013-12-19 | 2016-10-05 | 华为技术有限公司 | 页面渲染方法及装置 |
CN105701106A (zh) * | 2014-11-27 | 2016-06-22 | 广州市动景计算机科技有限公司 | 网页更新方法及装置 |
CN105184847B (zh) * | 2015-10-16 | 2017-12-12 | 上海恺英网络科技有限公司 | 3d游戏渲染引擎的渲染方法 |
CN109445784B (zh) * | 2018-09-29 | 2020-08-14 | Oppo广东移动通信有限公司 | 结构数据的处理方法、装置、存储介质及电子设备 |
CN113966619A (zh) * | 2020-05-14 | 2022-01-21 | 谷歌有限责任公司 | 渲染具有动态组件的视频 |
-
2022
- 2022-08-31 CN CN202211056295.5A patent/CN117667278A/zh active Pending
-
2023
- 2023-08-01 WO PCT/CN2023/110580 patent/WO2024046010A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2024046010A1 (zh) | 2024-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112130742B (zh) | 一种移动终端的全屏显示方法及设备 | |
CN110597512B (zh) | 显示用户界面的方法及电子设备 | |
CN115473957B (zh) | 一种图像处理方法和电子设备 | |
CN111669459B (zh) | 键盘显示方法、电子设备和计算机可读存储介质 | |
CN109857401B (zh) | 电子设备的显示方法、图形用户界面及电子设备 | |
CN113986070B (zh) | 一种应用卡片的快速查看方法及电子设备 | |
CN113961157A (zh) | 显示交互系统、显示方法及设备 | |
CN116048358B (zh) | 悬浮球的控制方法和相关装置 | |
CN115115679A (zh) | 一种图像配准方法及相关设备 | |
CN116048933A (zh) | 一种流畅度检测方法 | |
CN114205457B (zh) | 一种移动用户界面元素的方法、电子设备及存储介质 | |
CN116483734B (zh) | 一种基于编译器的插桩方法、系统及相关电子设备 | |
CN116048831B (zh) | 一种目标信号处理方法和电子设备 | |
CN116561085A (zh) | 图片分享方法和电子设备 | |
CN117667278A (zh) | 一种界面显示方法、设备及系统 | |
CN112416984A (zh) | 一种数据处理方法及其装置 | |
CN113495733A (zh) | 主题包安装方法、装置、电子设备及计算机可读存储介质 | |
CN116709609B (zh) | 消息传递方法、电子设备及存储介质 | |
CN116795476B (zh) | 一种删除壁纸的方法及电子设备 | |
CN116522400B (zh) | 图像处理方法和终端设备 | |
CN113297875B (zh) | 一种视频文字跟踪方法及电子设备 | |
CN117764853B (zh) | 人脸图像增强方法和电子设备 | |
CN116193275B (zh) | 视频处理方法及相关设备 | |
CN117689796A (zh) | 一种渲染处理方法及电子设备 | |
CN116700568A (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 |