理想情况下,60 FPS 以上就不会卡顿,就是 1 秒内要有 60 帧,所以每一帧要在 16ms 内绘制完成。如果一个页面无法在 16ms 内完成渲染,就会感到卡顿。
刷新机制可以看Android Project Butter分析或《Android应用性能优化最佳实践》2.1.2 刷新机制一节。
执行 adb shell dumpsys gfxinfo 包名
,在控制台显示日志
gfxinfo.JPG
当然体验下来,觉得没什么大用,比较鸡肋。
TraceView 在 Android Studio 3.0 以上已被弃用,被 CPU Profiler 替代,可参见 https://developer.android.com/studio/profile/monitor 的说明,CPU Profiler 的使用说明参见官方文档 https://developer.android.com/studio/profile/cpu-profiler。
详情参考 https://developer.android.com/studio/debug/layout-inspector。
layout.JPG
经常失败,网络搜索一大堆的错误情况,有些页面能成功,但这看代码也能分析出来,感觉依然是个鸡肋。
在“开发者选项”中打开“调试 GPU 过度绘制”(对未默认开启硬件加速的界面需要同时打开“强制进行 GPU 渲染”)。
RelativeLayout 层级低,但如果彼此依赖,在确定位置时,会给所有子 View 做一次排序,然后重新测量,因为会引起多次测量,所以性能略低;LinearLayout 层级深,会增加内存,引起栈溢出。
尽量不要嵌套使用 RelativeLayout。尽量不要在嵌套的 LinearLayout 中都使用 weight 属性。