标签(空格分隔): 翻译 android 性能优化
原文:Optimizing Layouts in Android – Reducing Overdraw
你有一个伟大的理想,让多用户启动你的应用。然而,你却听到用户投诉应用反应迟钝以致难以使用。伤心的表现。
有这样的一个步骤去改善应用的渲染时间:查看调度GPU过度绘制工具
什么是过度绘制:
过度绘制一般发生在应用要求系统在已有的视图上绘制别的视图。调试工具通过在屏幕上覆盖不同的颜色来划分该像素被重绘了几次。
如何打开调试工具
- 进入
系统设置
- 点击
开发者选项
- 选择
调度GPU过度绘制
- 在弹出的对话框中选择
显示过度绘制区域
你将注意到屏幕改变了颜色,不要惊慌。进入到你的应用,这时我们就可以一步一步弄明白如何改善布局。
不同颜色代表的意义
五种颜色分别代表着:
原始色
(即没有发生改变)——代表屏幕上该像素块仅被绘制了一次。
蓝色
(我感觉更像淡紫)——重绘1x——像素块被被绘制了两次。
绿色
——重绘2x——绘制了三次。
粉色
——重绘3x——绘制了四次。
红色
——重绘4x——绘制了五次。
能通过我的应用(原作者的)Book Dash application,初始布局中有很多过度绘制的地方。
如何修复过度绘制
在上面的粟子中,移除了RelaytiveLayout 的背景色并通过theme 设置背景。
原来的:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF">
现在的:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
修改布局得到以下结果:
如你所见,过度绘制减轻,红色区域减少
可以进一步改善,达到以原色和少量的蓝色(淡紫色)为目标。有此过度绘制是必不可少的。(很多布局为了提高多样化控件,多会导致过度绘制,两者之间需要根据实际情况衡量)
并不是所有的过度绘制都是设置背景导致的,其它情况也能导致过度绘制,例如,复杂的View叠加。
你的目标应该是低于 过度绘制2x(绿色)
通过Hierarchy Viewer或GL Tracer可查View层次关系,分析过度绘制原因。
……