无论是哪本讲解布局优化的参考书,它们都不得不提到Hierarchy Viewer。不过,通常情况下,Hierarchy( 英['haɪərɑːkɪ])Viewer无法在真机上进行使用,它只能在工厂的Demo机和模拟器上使用,即非加密过的设备。Google的大神——Romain Guy提供了一个开源项目View Server,通过这个程序可以让普通的手机也能使用Hierarchy Viewer,有兴趣的朋友可以前去了解一下,传送门:点击前往

下面在模拟器中使用这个工具,如图进入ADM:

进入ADM界面之后,如下图点击右上角DDMS左侧按钮,弹出对话框,再点击Hierarchy Viewer,然后OK,即可打开Hierarchy Viewer界面:

Hierarchy Viewer界面:

可以双击Windows栏下对应进程进行调试,注意右上角两个按钮分别是“refresh”和“load”的功能键:

为了测试这个工具,我们写了一个非常冗余的布局文件,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.example.performanceoptimizationtest.HierarchyViewerTest"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="hierarchyviewer"/></LinearLayout></LinearLayout></LinearLayout>

如此可以发现,只用三层LinearLayout嵌套,只装载了一个Button,很显然这些LinearLayout都是冗余的。下面利用工具进行分析:

通常情况下,重点关注!!! ID为content的FrameLayout分支,这也是setContentView()所设置的内容,如图:

在这里可以看见三层LinearLayout,而且这三层LinearLayout都没有任何分支。这说明了这些LinearLayout都是可以直接去掉的,这与我们的分析是一样的。
当点击其中一个View的时候,可以显示该View的绘制情况。不过,第一次点击的时候,各种显示时间都将是N/A,需要点击下图中的按钮重新进行计算,才能获取绘制信息:(!!!!!!!有时候会获取失败,这个时候只能关掉模拟器和ADM,重新打开试试了)

此时就可以知道每个View所绘制的时长,并且系统在下方也给出了三个不同颜色的小圆点,用来表示绘制的效率,绿、黄、红分别代表好、中、差三种不同的绘制效率。

通过Hierarchy Viewer工具,就可以很快地在视图树中找到冗余的布局,从而有目的地优化布局。同时,Hierarchy Viewer工具还可显示很多有用的信息,如下如:

总之,Hierarchy Viewer是进行布局优化的一个非常有用的工具,大家可以在官方API文档或者各大平台中了解更多详细的过程。

10.1.5 布局优化利器之 Hierarchy Viewer相关推荐

  1. mysql解释器优化_MySQL——SQL性能分析优化利器之Explain

    系统性能的优劣取决于我们sql的查询速度,MySQL Explain命令是分析SQL性能及优化不可缺少的一部分. Explain被我们称为解释器,通过 explain 我们可以知道以下信息:表的读取顺 ...

  2. Android应用性能优化最佳实践.2.3 布局优化

    2.3 布局优化 布局是否合理主要影响的是页面测量时间的多少,我们知道一个页面的显示测量和绘制过程都是通过递归来完成的,多叉树遍历的时间与树的高度h相关,其时间复杂度为O(h),如果层级太深,每增加一 ...

  3. 顺风车Android性能优化之View布局优化

    一.问题背景 在开发过程中,往往会听到 "性能优化" 这个概念,这个概念很大,比如网络性能优化.耗电量优化等等,对 RD 而言,最容易做的或者是影响最大的,应该是 View 的性能 ...

  4. android 减少布局层级,Android 布局优化

    布局优化主要从以下几点进行着手 减少布局层次 和 复杂度 优化绘制流程 按需加载布局 减少布局层次 和 复杂度 首先我们可以通过以下工具分析界面布局的结构 查看布局树工具:Hierarchy View ...

  5. Android 布局优化小结

    主要介绍使用抽象布局标签(include, viewstub, merge).去除不必要的嵌套和View节点.减少不必要的infalte及其他Layout方面可调优点,顺带提及布局调优相关工具(hie ...

  6. Hierarchy Viewer

    Hierarchy Viewer 帮你分析应用程序UI布局 Hierarchy Viewer在android的工具文件夹里: \android\tools\hierarchyviewer.bat 1. ...

  7. Android 卡顿优化 3 布局优化 工具 Hierarchy Viewer

    欲善其事, 先利其器. 分析布局, 就不得不用到Hierarchy Viewer了. 本文工具使用皆以GithubApp的详情界面RepoDetailActivity为例说明. 为了不影响阅读体验, ...

  8. 布局优化工具Hierarchy Viewer

    版权声明:本文为博主原创或汇集文章,欢迎注明来源转载.http://blog.csdn.net/u012792686 https://blog.csdn.net/u012792686/article/ ...

  9. python利器的使用-图文详解python开发利器之ulipad的使用实践

    Ulipad是一个国人limodou编写的专业Python编辑器,它基于wxpython开发的GUI(图形化界面).下面这篇文章主要介绍了python开发利器之ulipad的使用实践,文中介绍的非常详 ...

最新文章

  1. asp.net中的联动菜单
  2. 快速理解和使用 ES7 await/async
  3. 【牛客 - 188D 】愤怒(01滚动数组优化dp,括号匹配方案个数,tricks)
  4. android 屏幕坐标色彩,Android自定义View实现颜色选取器
  5. 详解 Qt 串口通信程序全程图文 (5)
  6. RS错误RSV-VAL-0032之项目未在布局中引用的3种解决办法
  7. java studentmanager_StudentManager.java
  8. 随想录(用python预测未来中国的GDP)
  9. 项目模板参数化(上)
  10. android+警告声音,android – 如何使用带有setAudioAttributes的警报音量播放铃声?
  11. java.lang.OutOfMemoryError: PermGen space---先测试
  12. 华为算法精英赛(题1:判断输入天数为当年的第几天)
  13. QT之Tcp数据发送测试工具
  14. Filenet:主打底层技术创新,检索分发挖矿开创全民挖矿时代!
  15. 个人笔记-Minecraft阿里云服务器搭建
  16. 可复制的领导力 重点总结读书笔记
  17. Java8中Map新方法:compute使用详解
  18. Day16:C++之STL应用篇(推箱子cxk限定)
  19. 电脑定时执行的软件 - 定时执行专家
  20. JavaScript学习(七)——对象与数组、内部对象(1)

热门文章

  1. 从opensuse 12.3 升级到 opensuse13.1体验
  2. JVMTOP JVM 监视工具
  3. .NET托管内存类应用的内存泄漏分析和诊断
  4. iOS 隐藏导航栏整个视图上移闪屏问题
  5. 从首页问答标题到问答详情页
  6. Android Studio打开项目所有Java文件的import显示红色
  7. 1003. 我要通过!(20)
  8. iOS开发小技巧--利用苹果官方API播放视频(方法已经过时,了解一下)
  9. oracle 更改ip
  10. 对象的引用和clone