什么是卡顿?
android系统 每隔16ms 就会 发出信号,通知 我们重绘界面。如果 16ms内 没有完成绘制界面的相关计算,GPU就会渲染 不出来,尤其是 执行ui滑动操作的时候。
android 中的view从加载 到显示到屏幕的过程
- CPU 加载计算 相关view代码(包括xml文件)
- OpenGL 绘制图像
-
GPU 栅格化处理,渲染到屏幕
卡顿的原因
UI布局复杂,层级太深
cpu进行的运算过多,解决方法:减少 Layout嵌套层级
重复绘制OverDraw
每屏(16ms重绘)的每一帧上, 每一个像素点应该只被绘制一次, 如果有多次绘制, 就是Overdraw, 过度绘制了;
可通过 "系统设置"-->"开发者选项"-->"调试GPU过度绘制"的工具 查看绘制分析。
解决方法:例如LinearLayout 嵌套ListView ,如果LinearLayout设置了背景颜色,ListView也设置了背景颜色,
就会有一部分像素点重绘,可以实际显示效果为参考 减少设置布局颜色