• Android应用优化之布局优化

    发布:51Code 时间: 2017-03-20 10:21

  • Android系统每隔16ms发出VSYNC信号,触发对UI的渲染,想要达到界面流畅,必须实现60fps,也就意味着大多数的操作必须在16ms内完成。 除了界面过于复杂导致的渲染不能及时完成之外,还存...

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

           除了界面过于复杂导致的渲染不能及时完成之外,还存在过度绘制的问题。过度绘制就是某个像素在同一帧的时间内被绘制多次,在多层次的UI界面中,如果不可见的UI也在进行绘制,那么这些重合区域的像素就会被绘制多次,从而浪费大量的CPU和GPU资源。

           过度绘制也发生在背景重叠的情况下,比如Layout中有自己的背景,同时子View中有自己的背景。

    如何检测?

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

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

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

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

    如何优化?

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

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

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

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

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

  • 上一篇:Android应用安全与防范之数据保护和资源保护

    下一篇:Android混淆打包

网站导航
Copyright(C)51Code软件开发网 2003-2018 , 沪ICP备16012939号-1