Android渲染机制

1、Android系统每隔16ms发出VSYNC信号,触发对UI进行渲染
2、渲染的过程是由CPU与GPU协作完成
如下图:

为什么是16ms?

1、人眼与大脑之间的协作无法感知超过60fps的画面更新
2、1000/60hz,相当于16ms

什么是GPU?

解释什么是GPU,首先要弄清楚一个概念—栅格化。
栅格化就是将Button,Shape,Path,String,Bitmap等UI组件拆分到不同的像素上进行显示。如下图:


UI的渲染过程由CPU和GPU共同完成,其中CPU负责把UI组件计算成Polygons,Texture纹理,然后交给GPU进行栅格化渲染。 GPU的引入就是为了加快栅格化的操作。
CPU和GPU协同工作的示意图如下:

UI卡顿的原因

没有办法在16ms内完成UI更新操作

如何解决UI卡顿

1、优化UI层次结构,去除不必要的嵌套,尽量使布局扁平化
2、减少过度绘制

Android UI优化—从Android渲染原理理解UI卡顿相关推荐

  1. android11性能有提升吗,Android性能优化第(十 一)篇---卡顿分析,正确评测流畅度...

    转载请注明文章出处LooperJing! 一.FPS评测应用流畅度不准确 说到应用的流畅度,都会想到FPS,系统获取FPS的原理是:手机屏幕显示的内容是通过Android系统的SurfaceFLing ...

  2. 【Android 性能优化】布局渲染优化 ( CPU 渲染优化 | 减少布局的嵌套 | 测量布局绘制时间 | OnFrameMetricsAvailableListener | 布局渲染优化总结 )

    文章目录 一. 减少布局嵌套 二. 布局渲染时间测量 1. FrameMetrics 使用流程 2. FrameMetrics 参数解析 3. FrameMetrics 代码示例 三. 布局渲染优化总 ...

  3. 【Android 性能优化】布局渲染优化 ( GPU 过度绘制优化总结 | CPU 渲染过程 | Layout Inspector 工具 | View Tree 分析 | 布局组件层级分析 )

    文章目录 一. GPU 过度绘制优化总结 二. CPU 渲染过程 三. CPU 渲染性能调试工具 Layout Inspector 四. Layout Inspector 组件树 DecorView ...

  4. 【Android 性能优化】布局渲染优化 ( 过渡绘制 | 背景设置产生的过度绘制 | Android 系统的渲染优化 | 自定义布局渲染优化 )

    文章目录 一. 背景设置产生的过度绘制 二. Android 系统的渲染优化 1. 透明组件数据传递 2. GPU 存储机制 3. Android 7.0 之后的优化机制 三. 自定义布局渲染优化 一 ...

  5. 【Android 内存优化】Android 原生 API 图片压缩原理 ( 哈夫曼编码开关 | 哈夫曼编码原理 | libjpeg-turbo 函数库 )

    文章目录 一. 哈夫曼编码开关 二. 哈夫曼编码原理 三. libjpeg-turbo 函数库 四. libjpeg-turbo 函数库下载 [Android 内存优化]图片文件压缩 ( Androi ...

  6. 【Android 内存优化】Android 原生 API 图片压缩原理 ( Bitmap_compress 方法解析 | Skia 二维图形库 | libjpeg 函数库 | libpng 函数库 )

    文章目录 一. 图片质量压缩方法 二. Skia 二维图形库 三. libjpeg.libpng 函数库引入 在博客 [Android 内存优化]图片文件压缩 ( Android 原生 API 提供的 ...

  7. 【Android 内存优化】Android 原生 API 图片压缩原理 ( 图片质量压缩方法 | 查找 Java 源码中的 native 方法对应的 C++ 源码 )

    文章目录 一. 图片质量压缩方法 二. 查找对应的 Native 方法源码 三. 分析 Bitmap.cpp 中动态注册 Native 方法 在博客 [Android 内存优化]图片文件压缩 ( An ...

  8. 【Android 内存优化】Android 工程中使用 libjpeg-turbo 压缩图片 ( 初始化压缩对象 | 打开文件 | 设置压缩参数 | 写入压缩图像数据 | 完成压缩 | 释放资源 )

    文章目录 一.使用 libjpeg-turbo 压缩图片流程 二.初始化 JPEG 压缩对象 三.打开文件 四.设置压缩参数 五.开始压缩 六.循环写入压缩数据 七.完成图片压缩及收尾 八.libjp ...

  9. 【Android CPU 优化】Android CPU 调优 ( Trace 文件分析 | Android Profiler 工具 | CPU Profiler 工具 )

    文章目录 一.Android CPU 优化 二.CPU Profiler 工具 三.相关资源 一.Android CPU 优化 在 Android 中 , 出现 动画掉帧 , 页面切换白屏 , 卡顿 ...

最新文章

  1. 各种格式的视频播放的代码(wma格式)
  2. 常用eclipse插件集合, 持续更新
  3. QT误修改了系统内的头文件处理
  4. 公众号服务器配置url证书问题,公众号服务器配置url,验证token一直出错,为什么?...
  5. Django 时间与时区设置问题
  6. vs 2008 Ide 设置
  7. web前端开发要不要找个师傅带?
  8. 微星刀锋 无法进入bios_微星MPG X570 GAMING EDGE WIFI刀锋板主板BIOS设置u盘启动教程...
  9. 逆向工具IDA下载网址
  10. 搜狗输入法界面简化设置
  11. 四个vue后台常用模板,你用过几个?
  12. 查理·芒格:投资与人生皆是自我修行-1
  13. 2019第十届蓝桥杯大赛软件类省赛C++ C组真题题解
  14. 小白学 Python 爬虫(26):为啥上海二手房你都买不起
  15. iPhone开发秘籍(一)--第一章 iPhone SDK简介
  16. 国庆活动征文 | 庆国庆,作几首打油诗在此
  17. Leetcode1367.二叉树中的列表
  18. vue2集成海康摄像头
  19. wordpress谷歌字体_适用于WordPress网站的10种性能最高的Google AdSense标语尺寸和格式
  20. C++进阶与拔高(二)(C++数据结构的具体实现:向量与列表)

热门文章

  1. Spring Boot设置访问url接口后缀
  2. 清华朱军团队开源首个基于Transformer的多模态扩散大模型
  3. Sql 保留两位小数
  4. 新榜 | 2022新媒体内容生态数据报告
  5. 一文读懂Casper区块链上的NFT
  6. DNS的解析顺序,以及判断DNS污染
  7. ipad、iphone上播放电影没声音的解决方法
  8. 查找元素(线性表实训)
  9. python练习—用户登录界面输入验证码测试
  10. 云原生之使用docker部署uptime-kuma服务器监控面板