经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 移动开发 » Android » 查看文章
布局渲染笔记 - I-for-code-crazy
来源:cnblogs  作者:I-for-code-crazy  时间:2019/5/20 8:38:16  对本文有异议

CPU  处理逻辑计算和内存管理,显示操作。

GPU  CPU无法显示复杂的图形,GPU用于显示复杂图形,分担CPU的任务

xml布局到屏幕的显示流程:xml 通过 LayoutInflater 加载到内存中,然后经过CPU计算处理为多维图形,在通过 OpenGL 调用GPU,GPU对图形进行栅格化显示到屏幕上,此时如果上面流程在16毫秒内完成,则直接显示到显示器,如果没能完成,则垂直同步等待下一帧完成。

由于人类的眼睛看到画面之帧率高于每秒约10-12帧的时候,就会认为是连贯的;

对于有声电影的拍摄和播放帧率均为每秒24帧,对人是可以接受的,但是早期的高动态电子游戏帧率如果少于每秒30帧的话就会不连贯,因为没有动态模糊使流畅度降低,在于手机交互的过程中,如果触摸反馈60帧以下人是可以感觉出来的,60帧以上不能察觉变化,当手机上帧率低于60fps的时候会感觉画面的卡顿和迟滞现象;

Android系统每隔16ms发出信号,触发对UI进行渲染,如果每次渲染都成功,就能达到流程的画面所需要的60fps,为了能够实现60fps,这意味着计算渲染的太多数操作都必须在16ms内完成。

当一帧画面渲染时间超过16ms的时候,垂直同步机制(每隔16ms刷新帧率)会让显示器硬件等待GPU完成栅格化渲染操作,这样会让一帧画面多停留16ms甚至更多,这样就造成了用户看起来画面停顿。

优化:

  CPU 减少xml转换成对象的时间,比如减少层级

  GPU 减少重复绘制

GPU的绘制过程根据CPU传递的指令来绘制,16ms绘制一次,指令来了就绘制,哪怕是同样的绘制指令,如果层次太深,用户看不到的区域也会被绘制,以及自定义控件中,onDraw方法做了过多的绘制。

Android手机开发者选项中,打开GPU过度绘制调试,蓝色 表示绘制了一次,淡绿色表示两次,淡红色表示三次,深红色表示四次。

注意:Android的Theme-主题中,是自带背景的,可以设置windowBackground为null

 

原文链接:http://www.cnblogs.com/LiuZhen/p/10890472.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号