android 性能优化之布局优化

注:本文内容是《Android 群英传》学习笔记,主要提炼书中内容然后加上部分自己的完善和补充。

android 渲染机制

  1. 16ms :1000ms在显示60帧画面的单位时间。系统通过VSYNC信号出发对UI的渲染、重绘。
  • 检测UI渲染时间工具
    • 开发者选项->Profile GPU Rendering(GPU配置未见)->On the screen as bars(以条的形式显示与屏幕)
    • 每一条柱状先都包含三部分
    • 蓝色代表测量绘制Display List的时间,
    • 红色代表OpenGL渲染Display List 所需要的时间
    • 黄色代表CPU等待GPU处理的时间。
    • 中间的绿色横线代表VSYNC时间16ms
    • 需要尽量将所有条形图都控制在这条绿线之下。

避免Overdraw

避免Overdraw ,开发者选项中有一个检测工具(Enable GPU Overdraw 调试GPU过度轩渲染),减少红色区域,增加蓝色区域。

优化布局层次

Google建议View 的高度不应超过10层,避免嵌套过多。

ViewStub 实现view的延迟加载

  1. ViewStub默认不加载
  • 两种方式显示通过ViewStub 加载显示的View
  • mViewStub = (ViewStub)findViewById(R.id.viewstub); mViewStub.setVisiable(View.VISIABLE);
  • View inflateView = mViewStub.inflate();
    区别是inflate()方法可以返回引用的布局,可以通过findViewById 找到layout加载的空间。儿不管使用哪种方式,一旦<ViewStub>被设置为可见或者inflate了,<ViewStub>就不存在了。并将这个Layout 的ID重新设置为<ViewStub>中通过android:inflateId属性所指定的ID。
<ViewStub> 只有在显示的时候才回去渲染。#####

利用sdk tools中的hierarchyviewer.bat工具分析

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容