app性能优化:优化布局层次结构

New UI-Hierarchy Viewer工具解析app的界面布局 New UI-Hierarchy Viewer工具解析app的界面布局  ——转载请注明出处:coder-pig,欢迎转载,请勿用于商业用途! 小猪Android开发交流群已建立,欢迎大家加入,无论是新手,菜鸟,大神都可以,小猪一个人的 力量毕竟是有限的,写出来的东西肯定会有很多纰漏不足,欢迎大家指出,集思广益,让小猪的博文 更加的详尽,帮到更多的人,O(∩_∩)O谢谢 阅读详情

使用基本的布局结构会导致 最高效的布局不过,您添加到应用中的每个微件和布局 需要进行初始化、布局和绘制。例如,使用嵌套 实例 LinearLayout 会导致视图层次结构过深。此外,将多个 使用 layout_weight 的 LinearLayout 实例 参数的开销可能特别大,因为每个子参数都需要测量两次。 在反复膨胀布局时,这尤为重要,例如 在 RecyclerView。

本文档介绍了如何使用 布局检查器和 lint 来检查和优化布局。

检查布局

Android SDK 工具包含 布局检查器工具, 您可以在应用运行时分析布局使用此工具有助于您 并发现布局性能中的低效问题

借助布局检查器,您可以选择已连接的设备上正在运行的进程,或 模拟器,然后显示布局树。每个街区的红绿灯 表示其测量、布局和绘制性能,这有助于您确定 潜在问题

例如,图 1 显示了用作 RecyclerView。此布局在左侧显示了一个小位图图像 右侧是两个堆叠的文本项。尤其需要注意的是 像这样多次膨胀的布局已经过优化,因为 成倍提升性能。
一张图片,显示列表中的单项内容:一张图片以及两段垂直对齐的文本
在这里插入图片描述

图 1. 中某项的概念性布局 RecyclerView。

布局检查器会显示可用设备及其正在运行的设备的列表 组件。从 Windows 标签页中选择您的组件,然后点击 布局检查器:用于查看所选组件的布局层次结构。 例如,图 2 显示了由图所示的列表项的布局 1.
显示布局检查器和 LinearLayout 组合的图片
在这里插入图片描述

图 2. 中布局的布局层次结构 图 1,使用嵌套的 LinearLayout 实例。

修改布局

由于前面的布局性能因嵌套 LinearLayout,那么您可以将 也就是让布局变浅变宽, 狭窄而深度。答 ConstraintLayout 因为根节点支持此类布局。当您将此设计转换为使用 ConstraintLayout 时,布局将成为两层层次结构:

    <androidx.constraintlayout.widget.ConstraintLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto"
      xmlns:tools="http://schemas.android.com/tools"
      android:id="@+id/root"
      android:layout_width="match_parent"
      android:layout_height="52dp"
      android:background="#e4e6e4"
      android:padding="4dp">

      <ImageView
          android:id="@+id/image"
          android:layout_width="48dp"
          android:layout_height="48dp"
          android:background="#5c5c74"
          android:contentDescription="An example box"
          app:layout_constraintBottom_toBottomOf="parent"
          app:layout_constraintStart_toStartOf="parent"
          app:layout_constraintTop_toTopOf="parent" />

      <TextView
          android:id="@+id/title"
          android:layout_width="0dp"
          android:layout_height="0dp"
          android:layout_marginStart="4dp"
          android:background="#745c74"
          app:layout_constraintBottom_toTopOf="@+id/subtitle"
          app:layout_constraintEnd_toEndOf="parent"
          app:layout_constraintStart_toEndOf="@id/image"
          app:layout_constraintTop_toTopOf="parent" />

      <TextView
          android:id="@+id/subtitle"
          android:layout_width="0dp"
          android:layout_height="0dp"
          android:background="#7e8d6e"
          app:layout_constraintBottom_toBottomOf="parent"
          app:layout_constraintEnd_toEndOf="parent"
          app:layout_constraintStart_toStartOf="@id/title"
          app:layout_constraintTop_toBottomOf="@+id/title" />
  </androidx.constraintlayout.widget.ConstraintLayout>

检查新布局如下所示:
显示 3D 布局检查器的图片
在这里插入图片描述

图 3. 布局检查器的 3D 模式。

这样的好处会成倍增加,因为这种布局用于 。

大部分差异都是由于在layout_weight LinearLayout 设计,这可能会导致衡量速度变慢。这个 展示如何恰当地使用每种布局的示例。请仔细考虑 需要使用布局权重。

在一些复杂的布局中,系统可能会浪费时间和精力测量相同的界面 多个元素。这种现象称为 Double Taxation。对于 如需详细了解 Double Taxation 以及如何防止出现这种情况,请参阅 性能 和视图层次结构。

使用 lint

最好运行 lint 工具 ,以搜索可能的视图层次结构优化。lint 替换了 layoutopt 工具,并具有更强大的功能。以下是 lint 示例 rules:

使用复合可绘制对象。您可以处理一个 LinearLayout, 包含 ImageView 和 TextView 作为复合可绘制对象,效率更高。
合并根帧。如果布局的根是 FrameLayout 既没有提供背景或内边距,则可将其替换为 合并标签,效率稍高一些。
去除无用的叶子。您可以移除没有任何子项的布局,也可以 因为我们看不到任何背景,所以更扁平、 高效的布局层次结构
请移除没用的父级。您可以移除包含符合以下条件的子项的布局: 兄弟姐妹,不是 ScrollView 或根布局,并且没有背景您还可以将 使子视图直接呈现在父项中,使视图更扁平、更高效 布局层次结构。
避免使用深层布局。嵌套过多的布局对 性能考虑使用较扁平的布局,例如 ConstraintLayout, 以提高性能。lint 检查的默认最大深度为 10。

lint 工具的另一个优势是它可以集成到 Android Studio 中。lint 会在您编译程序时自动运行。借助 Android Studio 还可以针对特定 build 变体或所有 build 运行 lint 检查 变体。

您还可以在以下集群中管理检查配置文件和配置检查: 在 Android Studio 中打开 File >设置 >项目 设置选项。系统会显示“Inspection Configuration”页面,其中包含 支持的检查:
一张图片,显示 Android Studio 的“Inspections”菜单
在这里插入图片描述

图 4. “Inspection Configuration”页面。

Lint 可自动修复某些问题、为其他问题提供建议,以及 直接跳转到违规代码进行审核。

更多fw实战开发干货,请关注下面“千里马学框架”
https://mp.weixin.qq.com/s/IluAN5L7uyObBh0KopI7rg

Android App性能优化指南 在不同的 android 应用程序组件之间提供清晰的界限是至关重要的。当你需要添加、删除或测试对应用程序其他模块的修改时,它会派上用场。最后,值得注意的是,全球已经数字化,连接设备的数量正在以惊人的速度增长。与此同时,用户的注意力范围正在减少。保留它们的唯一方法是让你的移动应用程序高效运行。此博客描述了提高 Android 应用程序性能的方法。这些策略结合起来可以显着减少 CPU 执行的工作量和应用程序消耗的内存量。 阅读详情

相关推荐

【深度解析】信息素养提升实践活动(附:历年获奖作品分析)

全国师生信息素养提升实践活动是由教育部教育技术与资源发展中心(中央电化教育馆)主办,面向全国师生的一项信息化交流展示活动。

m0_74417957的博客 2628

直播平台搭建探索App性能优化之布局优化

一、页面布局对App性能的影响和原因 布局性能主要影响 :App的页面显示速度。 布局影响性能的实质:页面的测量 & 绘制时间,一个页面通过递归完成测量 & 绘制过程。 二、优化思路 合理的布局性能、布局层级、布局复用性 和 按需加载(测量&绘制时间)。 在布局优化中,Android的官方提到了这三种标签、、,下面也是简单说一下它们的优势,以及怎么使用。 三、具体方案 (一) 提高布局的复用性 1、作用:提取布局间的公共部分,通过提高布局的复用性从而减少测量 & 绘制时间。

云豹网络科技 439

ANSYS Workbench接触分析实战:从算法选择到收敛难题破解

本文深入解析ANSYS Workbench接触分析的核心技术与实战技巧,涵盖四大接触算法选择、收敛难题破解秘籍及典型场景参数设置。通过实际案例演示如何优化接触刚度、pinball区域和非对称行为等关键参数,帮助工程师有效解决结构非线性问题,提升仿真效率和精度。

weixin_28705087的博客 359

Android性能优化之一 布局优化

本文为Android性能优化——布局优化,主要介绍使用抽象布局标签(include, viewstub, merge)、去除不必要的嵌套和View节点、减少不必要的infalte及其他Layout方面可调优点,顺带提及布局调优相关工具(hierarchy viewer和lint)。一、布局复杂度的优化 关于布局的优化,主要分两个大方向 实现相同界面效果并且层级结构相同时,选用何种Layout最好

阎魔爱的博客 2470

遥感大模型核心技术之自监督预训练技术研究(2025年9月版)

本文系统探讨了自监督预训练技术在遥感大模型构建中的核心作用。随着遥感数据进入"大数据"时代,传统监督学习面临"数据丰富、标签贫乏"的瓶颈,而自监督预训练通过设计代理任务从无标签数据中学习特征表示,成为驱动大模型发展的关键引擎。文章分析了遥感领域对自监督预训练的三大独特挑战:多源异构性、地理空间约束和时空动态性,并提出了针对性解决方案:掩码自编码(MAE)技术及其演进、地理对比学习与多模态融合、位置感知预训练与多任务学习。

panshengwu的博客 842

给宇树Go2机器人装‘眼睛’:在Jetson Orin Nano上从零部署YOLOv5的保姆级避坑实录

本文详细介绍了在Jetson Orin Nano上为宇树Go2机器人部署YOLOv5视觉系统的完整流程,涵盖硬件选型、环境配置、模型优化及系统集成等关键步骤。针对机器人应用场景特有的离线部署、版本冲突和实时推理等挑战,提供了实用的解决方案和性能优化技巧,帮助开发者快速实现机器人的视觉能力升级。

weixin_29169505的博客 378

Android性能优化实战(二)----界面布局优化

App界面布局是用户能体验到应用性能好坏最直接的方式,如果布局写得不好,App就容易卡顿,严重影响用户体验。通过这篇博客,来学习总结一下常用的View布局优化方法。优化布局层次结构我们知道,Android View的绘制分为三个过程:measure、layout和draw,首先绘制的父类布局ViewGroup,绘制完父类布局后再对ViewGroup里面的子View绘制,如果你的app布局层次复杂,就

leienaleisi的博客 699

【ROS学习笔记】13.ROS中的坐标管理系统

文章目录1 机器人中的坐标变换2 TF功能包TF坐标变换如何实现?TF的一个小案例3 小程序:小海龟跟随实验打开小程序查看当前的TF树坐标相对位置关系可视化1(tf_echo)坐标相对位置关系可视化2(rviz) 本节学习ROS中的坐标管理系统。 (部分图摘自:b站【古月居】古月·ROS入门21讲) 1 机器人中的坐标变换 机器人运动学的核心,描述任意两个坐标系之中任意两个向量之间的变换,可以用一个4×4的变换矩阵(Transformation Matrices)来描述它的平移和旋转变化。 变换矩阵中有包括

takedachia的博客 4338

Android App 性能优化之UI布局

https://blog.youkuaiyun.com/zhangbijun1230/article/details/79451632 https://blog.youkuaiyun.com/zhangbijun1230/article/details/79449725 https://blog.youkuaiyun.com/zhangbijun1230/article/details/79449684 https://blog.youkuaiyun.com/zhangbijun1230/article/details/82385531 https://

Deep C 433

核函数——原理剖析

(Kernel Function)是机器学习和统计学中的一个重要概念,特别是在支持向量机(SVM)和其他基于核方法的算法中。核函数的主要作用是通过一个隐式的方式将数据映射到一个高维空间,从而使得在该高维空间中线性不可分的问题变得线性可分。没关系,现在让我们抛开一切无关的事情,花20分钟来认真领会一下,核函数的原理到底是什么。然后我们来说什么什么样的函数有资格称为核函数,也就是上面说的一个函数的内积矩阵是半正定矩阵。中的分布如左图所示。中是不可实现的,那如果我们将原始空间中的所有样本点,通过一个映射关系。

m0_70254540的博客 1587

手把手教你用VS Code + Codex在WSL中高效编程(避坑指南)

本文提供了一份详细的避坑指南,教你如何在WSL环境中高效配置和使用VS Code与OpenAI Codex。文章核心在于解决WSL内Codex扩展的OAuth登录失败问题,推荐将扩展安装在Windows本地,并通过UNC路径直接访问WSL文件系统,从而实现AI辅助编程与Linux开发环境的无缝结合,提升编码效率。

weixin_28677451的博客 1065

2024Android App开发工作必知必会之【性能优化】

Application 和主 Activity 的 onCreate 中异步初始化某些代码启动过程中繁忙的 cpu启动过程中繁忙的 SystemServer。

2401_85955090的博客 1247

系统安全性评估 (SSA) 详细解析

系统安全性评估(SSA)是一种自下而上的验证过程,目的是确保系统设计中的每个功能、子系统、硬件和软件的实现,符合早期通过 FHA 和 PSSA 设定的安全性需求。它通过对已实现的系统进行系统性综合评价,检验各项设计和安装是否符合预期的安全性目标,最终支持飞机的适航认证。飞行控制系统是飞机安全性设计的核心子系统之一,负责控制飞机的姿态和方向。为了确保飞行控制系统能够在各种飞行条件下保持安全运行,SSA 被用于验证该系统的设计是否满足 FHA 中设定的安全性目标。

qq_41854911的博客 1651

【Android -- 性能优化】布局优化

有些过度绘制是无法避免的。因此在优化界面时,应该尽量让大部分的界面显示为真彩色(即无过度绘制)或者为蓝色(仅有 1 次过度绘制)。尽量避免出现粉色或者红色。

Kevin Learn Android 1524

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Android性能优化——布局优化

Android性能优化之布局优化

weixin_42277946的博客 521

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Android的性能优化

Android的性能优化写在前面: 公司给了我一周的时间去学习Android性能的优化,参考了张明云老师的一片文章,并且用公司的实际项目进行测试(附有截图),还进行了一些知识点,注意事项以及很多网址链接的补充,希望这篇博文能让做性能测试的朋友们少走一些弯路。 文中没有贴出大段代码,但是几乎所有的知识点都有链接,点进去就能看你想看的。转载注明出处。 零:性能指标 布局复杂度:布局复杂会导致布局需

MeloDev的博客 2625

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Android布局分析工具Layout Inspector(解决布局产生的性能问题)

我们在Android开发中,如果出现了页面打开时间慢,该如何分析解决呢? 其实有很多原因可以导致页面打开慢,例如cpu占用过高、主线程进行耗时任务、布局复杂、布局层级过深等,其中最常见的就是布局问题了,我们重点来看如何解决布局相关的性能问题。...

卜大爷的博客 3万+

Android性能优化——渲染

文章目录性能优化之渲染1. 为什么渲染性能很重要2. Defining 'Jank'3. CPU和GPU4. Android UI 和 GPU5. Overdraw6. 修复overdraw7. 关于overdraw的另一件事8. clipRect 和 quickReject9. 练习使用10. 使用Canvas修复11. Layouts, Invalidations and Perf12. Hi...

PdKingLiu 1508

你想知道的布局优化都在这里了

人到中年不得已,莫愁前路有知己! Android性能优化系列专栏第三篇:上一篇中通过图文加实战的方式介绍了Android的内存优化,有需要的可以翻看一下:《你的应用内存优化了吗?》,今天我们就继续来说说Android中的布局优化相关的知识。

江湖人陆仁甲 1785

关于Android性能优化总结之一

Android性能优化总结一:UI布局优化 照例先贴参考文章地址,汲取各方面资源起码要标明一下,可能看的文章较多有遗漏的不断补充完善 https://my.oschina.net/nicksong/blog/3043796 https://www.jianshu.com/p/d71b51a0e29f Android的性能优化决定了应用的竞争力和性价比,同样的一个应用除了功能和面向的市场、用...

wangyetongsss的博客 482

android真机修改布局,Android布局优化之层级优化

程序的每个组件和 Layout 都需要经过初始化、布局和绘制,如果布局嵌套层次过深,就会导致加载操作更为耗时,更严重的话还可能导致内存溢出。本节我们学习使用两个工具来检查和优化 Layout。HierarchyViewer该工具位于Android SDK tools中,使用HierarchyViewer可以分析正在运行app的布局,从而打破影响布局性能的瓶颈。HierachyViewer通过选择运...

weixin_36284522的博客 528

卡顿分析与布局优化

1、App层面监控卡顿 systrace可以让我们了解应用所处的状态,了解应用因为什么原因导致的。若需要准确分析卡顿发生在什么函数, 资源占用情况如何,目前业界两种主流有效的app监控方式如下: 1、 利用UI线程的Looper打印的日志匹配; 2、 使用Choreographer.FrameCallback; Looper日志检测卡顿 Android主线程更新UI。如果界面1秒钟刷新少于60次,即FPS小于60,用户就会产生卡顿感觉。简单来说, Android使用消息机制进行UI更新,UI线程有个L

weixin_39069034的博客 381
上一篇: 安卓官方文档带你学车载音频焦点
下一篇: 春节后如何高效投入工作?--祝大家开工大吉
千里马学框架
博客等级 码龄6年 1万+粉丝 650原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千里马学框架

帮助你了,就请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值