更多关于Android渲染性能请点击这里
渲染性能到底是什么呢
系统的屏幕刷新
首先要知道系统会试图每16ms就对你的Activity进行重新绘制,所以应用需要在16ms内运行所有相关的逻辑来更新屏幕,从而达到60帧每秒的效果
如果你错过了这个时间比如花费了24ms 你就会丢帧
系统尝试刷新一个新的图像,但是由于他没有准备好,什么都刷不出来,用户也就在32ms看到同一帧画面,这种现象就是用户所说的卡顿或延迟,
丢帧期间的动画会成为运行过程中的卡顿,很容易被发现。
当与系统交互时,会表现的更加严重,比如拖动列表或者用户输入时
错过刷新的原因
原因有很多,例如你花了过多时间重绘视图层的某些部分浪费了CPU周期
或者绘制了太多的对象,重复叠加,浪费了宝贵的时间进行像素着色,用户最终还看不到这些画面。
或者一次次运行大量动画 这会导致CPU和GPU组件上内存的大量变动
如何发现并解决这些问题
通过程序设计在代码中发现问题,这无疑是很困难的
我们也可以借助工具
Hierarchy Viewer
对于复杂的Activity可以借助Hierarchy Viewer来查找确认时间过长、浪费时间太多、重绘等问题
使用 On-Device工具
比如Profile GPU Rendering、 Show GPU Overdraw 、GPU View Updates都可以帮助确认问题
对于出现在CPU代码中的渲染漏洞
Traceview
Traceview 适合检测到底是导致超过16ms的界限