美文网首页
布局渲染与优化

布局渲染与优化

作者: Lypop | 来源:发表于2020-08-28 17:04 被阅读0次
    前言
    image-20200828155733214.png

    黄色的Control为控制器,用于协调控制整个CPU的运行,包括取出指令、控制其他模块的运行等;
    绿色的ALU是算术逻辑单元,用于进行数学、逻辑运算;
    橙色的Cache和DRAM分别为缓存和RAM,用于存储信息

    从结构图可以看出,CPU的控制器较为复杂,而ALU数量较少。因此CPU擅长各种复杂的逻辑运算,但不擅长数学运算尤其是浮点运算

    CPU与GPU工作流程
    image-20200828162708419.png
    卡顿原因分析

    Android系统每隔16ms发出VSYNC信号(1000ms/60=16.66ms),触发对UI进行渲染,如果每次渲染都成功,这样就能达到流畅棉花所需要的60fps。

    image-20200828165004059.png

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

    优化方向

    解决卡顿从两方面入手:

    (1)CPU减少xml转换成对象的时间

    (2)GPU减少重复绘制的时间

    GPU过度绘制的几种情况

    (1)自定义控件中,onDraw方法做了好多重复绘制

    (2)布局层次太深,重叠性太强。用户看不到的区域GPU也会渲染,导致耗时

    工具的使用

    Hierarchy Viewer目前已经处于废弃状态

    image-20200828164350774.png

    绿: 表示该View的此项性能比该View Tree中超过50%的View都要快;例如,代表Measure的是绿点,意味着这个视图的测量时间快于树中的视图对象的50%

    黄: 表示该View的此项性能比该View Tree中超过50%的View都要慢;

    红: 表示该View的此项性能是View Tree中最慢的

    Layout Inspactor

    image-20200828164605319.png

    Lint建议

    相关文章

      网友评论

          本文标题:布局渲染与优化

          本文链接:https://www.haomeiwen.com/subject/xqglsktx.html