程序性能优化之布局检测与优化(二)下篇

1.3.1.1 添加依赖,外层build.gradle文件,添加工具远程仓库地址;内层build.gradle文件,添加依赖:

allprojects {
repositories {
jcenter()
maven { url “https://jitpack.io” }
}
}

dependencies {

compile ‘com.github.romainguy:ViewServer:017c01cd512cac3ec054d9eee05fc48c5a9d2de’
}

####1.3.1.2 在manifest文件申请网络权限

1.3.1.3 在应用中需要调试的Activity中添加如下代码,启动ViewServer, 这样就可以与hierarchy viewer通信了:

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Set content view, etc.
ViewServer.get(this).addWindow(this);
}

public void onDestroy() {
super.onDestroy();
ViewServer.get(this).removeWindow(this);
}

public void onResume() {
super.onResume();
ViewServer.get(this).setFocusedWindow(this);
}

1.3. 2 第二种方式

通过设置环境变量,export ANDROID_HVPROTO=ddm,我用小米note, 5.0系统的手机,发现并无效果,简书上有童鞋用Nexus的手机时可以正常使用呢的,目前暂未找到原因。

1.4. 分析页面布局性能

1.4.1 选择一个节点,点击右上角的的按钮,就可以获取到布局绘制的时间,如图:

这里我们主要关注下面的三个圆圈,从左到右依次,代表View的Measure, Layout和Draw的性能,不同颜色代表不同的性能等级:

1) 绿: 表示该View的此项性能比该View Tree中超过50%的View都要快;例如,一个绿点的测量时间意味着这个视图的测量时间快于树中的视图对象的50%。

2)黄: 表示该View的此项性能比该View Tree中超过50%的View都要慢;例如,一个黄点布局意味着这种观点有较慢的布局时间超过50%的树视图对象。

3)红: 表示该View的此项性能是View Tree中最慢的;例如,一个红点的绘制时间意味着花费时间最多的这一观点在树上画所有的视图对象。

1.4.2 测量结果分析

红色节点是代表应用性能慢的一个潜在问题,下面是几个例子,如何来分析和解释红点的出现原因?

1)如果在叶节点或者ViewGroup中,只有极少的子节点,这可能反映出一个问题,应用可能在设备上运行并不慢,但是你需要指导为什么这个节点是红色的,可以借助Systrace或者Traceview工具,获取更多额外的信息;

2)如果一个视图组里面有许多的子节点,并且测量阶段呈现为红色,则需要观察下子节点的绘制情况;

3)如果视图层级结构中的根视图,Messure阶段为红色,Layout阶段为红色,Draw阶段为黄色,这个是比较常见的,因为这个节点是所有其它视图的父类;

4)如果视图结构中的一个叶子节点,有20个视图是红色的Draw阶段,这是有问题的,需要检查代码里面的onDraw方法,不应该在那里调用。

1.5. 布局常见问题与优化建议

1)没有用的父布局时指没有背景绘制或者没有大小限制的父布局,这样的布局不会对UI效果产生任何影响。我们可以把没有用的父布局,通过标签合并来减少UI的层次;

2)使用线性布局LinearLayout排版导致UI层次变深,如果有这类问题,我们就使用相对布局RelativeLayout代替LinearLayout,减少UI的层次;

3)不常用的UI被设置成GONE,比如异常的错误页面,如果有这类问题,我们需要用标签,代替GONE提高UI性能。

二、Layout Inspector

2.1 打开布局检查器

    1. 在连接的设备或模拟器上运行您的应用
    1. 点击 Tools > Android > Layout Inspector
    1. 在出现的 Choose Process 对话框中,选择您想要检查的应用进程,然后点击 OK

注意:如果设备上的布局发生变化,布局检查器不会更新。 您必须再次点击 Tools > Android > Layout Inspector,创建一个新的快照。每一个快照都将保存到 project-name/captures/ 内一个单独的 .li 文件中。

2.2 调试区域介绍

打开布局检查器后,界面如下:

自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…


《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!
)]
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!

  • 24
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值