Android应用优化之布局优化

Android系统每隔16ms发出VSYNC信号,触发对UI的渲染,想要达到界面流畅,必须实现60fps,也就意味着大多数的操做必须在16ms内完成。canvas

除了界面过于复杂致使的渲染不能及时完成以外,还存在过分绘制的问题。过分绘制就是某个像素在同一帧的时间内被绘制屡次,在多层次的UI界面中,若是不可见的UI也在进行绘制,那么这些重合区域的像素就会被绘制屡次,从而浪费大量的CPU和GPU资源。  过分绘制也发生在背景重叠的状况下,好比Layout中有本身的背景,同时子View中有本身的背景。布局

如何检测?性能

1.使用HierarchyViewer来查找Activity中的布局是否过于复杂;优化

2.在开发者选项中打开Show GPU Overdraw选项进行观察是否存在过分绘制;url

3.在开着选项中选择Profile GPU Rendering,选中On screen as bar;.net

4.使用TraceView来观察CPU的执行状况。code

如何优化?对象

1.减小布局的层级,合理的使用include、merge、ViewStub;ip

2.自定义组件的onDraw()中避免大量建立临时对象,好比String,以避免频繁触发GC;资源

3.自定义组件的onDraw()中,考虑使用canvas.clipRect()绘制须要被绘制的区域;

4.对于listView这样的组件容器,考虑使用convertView、ViewHolder;

5.考虑使用性能更高的组件,好比推荐使用RecycleView来代替ListView,使用staticlayout来实现自动换行。

相关文章
相关标签/搜索