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加载的空间。儿不管使用哪种方式,一旦被设置为可见或者inflate了,就不存在了。并将这个Layout 的ID重新设置为中通过android:inflateId属性所指定的ID。
只有在显示的时候才回去渲染。#####

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

你可能感兴趣的:(android 性能优化之布局优化)