美文网首页
布局渲染优化

布局渲染优化

作者: 拙峰朽木 | 来源:发表于2018-03-04 09:47 被阅读19次

[toc]
动脑学院视频笔记:

GPU与CPU的区别

image.png

黄色的 Control 为控制器,用于协调控制整个 CPU 的运行,包括取出指令、控制其他模块的运行等; 绿色的 ALU ( Arithmetic Logic Unit )是算术逻辑单元,用于进行数学、逻辑运算;
橙色的 Cache 和 DRAM 分别为缓存和 RAM ,用于存储信息。
从结构图可以看出, CPU 的控制器较为复杂,而 ALU 数量较少。因此 CPU 擅长各种复杂 的逻辑运算,但不擅长数学尤其是浮点运算。

XML文件到屏幕显示的过程

image.png image.png

卡顿原理分析

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

image.png

16 毫秒的时间主要被两件事情所占用
第一件:将 UI 对象转换为一系列多边形和纹理
第二件: CPU 传递处理数据到 GPU 。
所以很明显,我们要缩短 这两部分的时间,也就是说需要尽量减少对象转换的次数,以及上 传数据的次数

如何减少这两部分的时间 以至于在 16ms 完成呢
  • CPU 减少 xml 转换成对象的时间
  • GPU 减少重复绘制的时间

过度绘制

GPU绘制的过程,就像刷墙一样,一层层的进行,16ms刷一次。这样就会造成,图层覆盖的现象,即无用的图层还会被绘制在底层,造成不必要的浪费。

过度绘制几种情况
  • 自定义控件中onDraw方法做了过多重复绘制
  • 布局层次太深,重叠性太强,用户看不到的区域GPU也会渲染,导致耗时增强
过度绘制查看工具
image.png image.png

优化步骤

  • 布局中是否有多余背景
    在style中去除主题背景
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!--去掉主题背景  对UI渲染进行优化-->
        <item name="android:windowBackground">null</item>
  
    </style>

在Activity中去除主题背景

getWindow().setBackgroundDrawable(null);

推荐使用style 去除 QQ就是这么做的

  • 是否可以删除多余布局(即看是否能删除只有一个子布局的结点)
    使用$<merge>$标签减少嵌套
  • 自定义View是否进行了裁剪
  • 布局是否扁平化
    使用相对布局减少线性布局使用,以及现在新出来的约束布局

相关文章

  • 布局渲染优化

    [toc]动脑学院视频笔记: GPU与CPU的区别 黄色的 Control 为控制器,用于协调控制整个 CPU 的...

  • 布局渲染与优化

    前言 黄色的Control为控制器,用于协调控制整个CPU的运行,包括取出指令、控制其他模块的运行等;绿色的ALU...

  • android性能优化-渲染-布局优化

    1.Hierarchy Viewer工具 Hierarchy Viewer将帮助我们快速可视化整个UI结构,并且可...

  • 第十章:Android 性能优化

    《Android群英传》——个人读书笔记 10.1 布局优化 10.1.1 Android UI 渲染机制 And...

  • Android布局优化(一),Android渲染机制

    总结布局优化前,首先要了解android的渲染机制。2015新年伊始,Google发布了关于Android性能优化...

  • Android群英传读书笔记(第十章)

    上一章 本章主要介绍的是android的性能优化。 1.布局优化 Android UI渲染机制在Android中,...

  • Android性能优化:布局渲染

    索引 Android中的布局渲染,一般来说是系统解析应用的布局文件,到界面显示出来的。这其中包含CPU和GPU的工...

  • Android性能优化

    Android性能优化 布局优化 Android UI渲染机制 人眼所感受到的流畅画面,需要画面的帧数达到40-6...

  • Android性能-概括

    android的性能优化主要分为2类:1.布局优化 2.内存优化 基础概念:卡顿的概念: 一次渲染绘制要在16ms...

  • Android性能优化--布局优化

    我们都知道,UI布局也影响着咱们App的性能,嵌套层级过多的布局在渲染时候会需要更多时间。下面就提出一些优化布局的...

网友评论

      本文标题:布局渲染优化

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