外观
如何优化自定义 View 的绘制性能以避免过度绘制?
标准回答
绘制优化就是少做无用的画图工作,并把不必每帧重复的计算提前做好。
- 去掉被完全遮挡的背景和冗余层,避免无收益的透明叠加。
- Paint、Path 等尽量复用,复杂计算移出每帧 onDraw。
- 结合过度绘制工具和 Trace,检查主线程、RenderThread 与 GPU。
通俗例子
整个屏幕都被不透明图片盖住,下面还画三层背景就很浪费。Paint 可提前创建,路径也不必在每帧从头计算。
深入解释
**什么是过度绘制:**同一个像素在一帧内被多个不必要图层反复覆盖。例如全屏不透明图片下面仍绘制大块背景,前面的结果最后完全看不见。
**优化怎么确认:**先移除无用绘制和每帧重复计算,再比较相同操作下的帧耗时。不能只凭布局层数少了,就断定 GPU 或主线程一定更快。
易混淆点
层级更少或 overdraw 更低,不自动等于整体更快,仍要测量。
参考资料
内容来源
- Android · AI Agent 知识手册 · 原条目
2.1.3