[发明专利]一种用户界面渲染的方法及装置有效
| 申请号: | 201710755049.1 | 申请日: | 2017-08-29 |
| 公开(公告)号: | CN107729094B | 公开(公告)日: | 2020-12-29 |
| 发明(设计)人: | 李沛;杨朝楷 | 申请(专利权)人: | 口碑(上海)信息技术有限公司 |
| 主分类号: | G06F9/451 | 分类号: | G06F9/451 |
| 代理公司: | 北京清源汇知识产权代理事务所(特殊普通合伙) 11644 | 代理人: | 冯德魁;窦晓慧 |
| 地址: | 200135 上海市浦东新区自由*** | 国省代码: | 上海;31 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 用户界面 渲染 方法 装置 | ||
本申请公开了一种用户界面渲染的方法,包括:基于主线程触发针对待渲染对象的用户界面渲染;从所述主线程切换至子线程,通过所述子线程绘制所述待渲染对象对应的位图;回调所述主线程,将绘制好的位图应用到所述待渲染对象的显示内容当中;根据所述待渲染对象的显示内容渲染用户界面。所述用户界面渲染的方法将原本在主线程执行的位图绘制操作转移到子线程进行,从而减轻了主线程的负荷,避免主线程在任务繁重时及时处理渲染任务造成的用户界面卡顿。
技术领域
本申请涉及UI渲染技术领域,具体涉及一种用户界面渲染的方法。本申请同时涉及一种用户界面渲染的装置,以及一种电子设备。
背景技术
在终端设备中,CPU(中央处理器)、GPU(Graphics Processing Unit,图形处理器)和显示器在进行用户界面(UI,User Interface)渲染时,是通过下述方式协同工作:在帧同步信号到达后,会通知应用程序进行用户界面渲染,应用程序的主线程开始在CPU当中计算显示内容,比如视图的创建、布局计算、图片解码、文本绘制等,计算完成后CPU会将显示内容提交到GPU,由GPU根据显示内容进行变换、和成和渲染,渲染完成后GPU会将渲染结果放入帧缓存区,等待下一次帧同步信号到达后将帧缓存区的数据传递给显示器进行显示。
以iOS系统为例,应用程序通过系统提供的UIKit和CoreAnimation等框架进行用户界面渲染,但这些框架都要求必须在主线程进行操作,内部的实现也都是主线程在CPU上进行的,比如准备视图的层级关系、设置图层属性、绘制位图以及图片解码等。当用户界面层级较为复杂或者绘制的内容较为繁杂时,一个刷新周期内无法完成任务,导致用户界面内容不能及时更新到屏幕上,会引起用户界面卡顿。此外,如果主线程在进行其他繁重任务,比如在主线程中响应用户的触摸、点击等操作,可能会导致主线程无法及时处理渲染任务,同样会导致用户界面卡顿。
发明内容
本申请提供一种用户界面渲染的方法,以解决现有技术存在的用户界面卡顿的问题。
本申请同时涉及一种用户界面渲染的装置,以及一种电子设备。
本申请提供一种用户界面渲染的方法,包括:
基于主线程触发针对待渲染对象的用户界面渲染;
从所述主线程切换至子线程,通过所述子线程绘制所述待渲染对象对应的位图;
回调所述主线程,将绘制好的位图应用到所述待渲染对象的显示内容当中;
根据所述待渲染对象的显示内容渲染用户界面。
可选的,所述从所述主线程切换至子线程,通过所述子线程绘制所述待渲染对象对应的位图步骤执行前,执行下述步骤:
确定所述待渲染对象的视图层级树;
对所述视图层级树中的节点进行光栅化;
其中,所述待渲染对象对应的位图根据所述视图层级树中节点的光栅化结果进行绘制。
可选的,所述用户界面渲染的方法,包括:
根据所述待渲染对象的属性信息确定所述视图层级树中节点的节点属性;
其中,所述节点属性包括:光栅化属性和非光栅化属性;
相应的,所述视图层级树中的节点包括:光栅化根节点、光栅化子节点和非光栅化节点。
可选的,所述光栅化根节点设置有状态标识,所述状态标识包括:允许与光栅化子节点进行光栅化的第一状态标识,以及不允许与光栅化子节点进行光栅化的第二状态标识。
可选的,所述对所述视图层级树中的节点进行光栅化,采用如下方式实现:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于口碑(上海)信息技术有限公司,未经口碑(上海)信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710755049.1/2.html,转载请声明来源钻瓜专利网。





