App性能优化方案——布局层级太多怎么优化?

226 篇文章 8 订阅
订阅专栏
76 篇文章 1 订阅
订阅专栏
58 篇文章 1 订阅
订阅专栏

作者:小海编码日记

View整体布局是通过深度优先的方式来进行组织的,整体形似一颗树,所以优化布局层级主要通过三个方向来实施:

  • 降低布局深度:使用merge标签或者布局层级优化等手段来减少View树的深度;
  • 布局懒加载:使用ViewStub,AsyncLayoutInflater等布局加载手段,来确保只有当需要该布局时,该布局才会被创建,优化布局加载速度;
  • 布局重用:通过include等标签重用界面布局,减少GPU重复工作

解析:

<merge/>

<merge/>标签通常用于将其包裹的内容直接添加到父布局以达到降低布局深度的目的,一个普通的layout布局文件及其结构如下图所示:

当将该布局文件的根标签修改为<merge/>标签后,得到的布局结构如下图所示:

可以看出<merge/>标签内子元素的父布局均变更为顶上的FrameLayout,进而使得布局深度减1.

结合以上例子,我们可以得出 <merge/>标签的主要工作原理是将本应在<merge/>标签节点的Layout与该节点的父布局进行重用,以达到优化布局深度的目的,对<merge/>标签内包含的其他布局结构而言并不能起到优化深度的作用

使用<merge/>标签有以下注意事项:

  • 布局文件中<merge/>标签只能作为根标签;
  • 使用LayoutInflater加载<merge/>标签为根的布局文件时,必须设置attachToRoot为true,以确保重用父布局;
  • <merge/>标签携带的参数没有实际意义
  • <merge/>标签并不是真实存在的View或者ViewGroup,其相当于一种标记,用来表示其所包裹的内容应被添加到其上级布局,真实存在的ViewGroup是引用<merge/>标签布局的上一级布局

<ViewStub/>

<ViewStub/>标签通常用于声明布局中可以被延时加载的部分,在首次布局文件加载时处于占位状态,当调用inflate或者setVisible时才会完成加载动作,一个普通的使用<ViewStub/>布局文件及其结构如下图所示:

当执行ViewStub.inflate之后,得到的布局结构如下图所示:

可以看出ViewStub区域被其对应的布局结构替换掉了。

结合上述例子,我们可以得出使用<ViewStub/>标签可以管理在页面首次初始化时不需要加载的布局,提升渲染速度,等到需要这部分UI时再进行加载

<include/>

<include/>标签可以将一些公共布局文件在多处重复引用,以便提升布局效率,例如各个页面都有的状态栏,当使用自定义布局实现后,则可以使用<include/>标签进行重复引用。

<include/>标签使用示例代码如下:

 <?xml version="1.0" encoding="utf-8"?>
 <merge xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent">
 ​
     <LinearLayout
         android:layout_width="wrap_content"
         android:layout_height="wrap_content">
 ​
         <include
             android:id="@+id/view_stub"
             layout="@layout/test"/>
 ​
         <com.poseidon.looperobserver.customview.CustomView
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_gravity="center"
             android:id="@+id/custom_view"
             android:text="move me!" />
 ​
     </LinearLayout>
 ​
 </merge>

使用<include/>标签得到的布局结构如下图所示:

可以看出从布局结构来讲并无明显差异,在初次加载就会直接构建在View树上。


其实想要全面掌握好 Android 性能优化的话,这些知识点你必须要有所了解,如: 内存优化、网络优化、卡顿优化、存储优化……等,为了让大家一次都可以了解全,所以将其整合成名为 《Android 性能优化核心知识点手册》,大家可以参考下:

《APP 性能调优进阶手册》: https://qr18.cn/FVlo89

启动优化

内存优化

UI优化

网络优化

Bitmap优化与图片压缩优化

多线程并发优化与数据传输效率优化

体积包优化

《Android 性能调优核心笔记汇总》: https://qr18.cn/FVlo89

《Android 性能监控框架》: https://qr18.cn/FVlo89

优化APP性能的三大方法
资讯汇
04-06 4097
对于开发人员来说“性能优化”是再熟悉不过了,因为一个合格的APP操作是流畅的,性能是稳定的,所以开发人员的工作除了编写代码之外,就是检测分析APP的性能,然后找出原因,进而优化APP性能。另外,除了人为检测分析APP性能之外,还可以使用工具,更加精准快捷;比如说“友盟”这款工具,功能种类丰富,操作丝滑流畅,我个人使用的也正是友盟。那么接下来进入正文,我来给大家简单介绍下关于APP性能优化的几个方面,以及友盟的详细功能介绍! 一、优化APP性能的方法 1、在后台取消一些线程中的动作 我们知道App运行过
App性能优化方案
坚持在Android领域深耕、突破、创新。
07-05 887
移动互联网的发展不知不觉已经十多年了,可以说,国内移动互联网的红利期已经过去了,现在是增量有限,存量厮杀,从争夺用户到争夺时长。不管是用户也好、企业也好,都对 App 的用户体验和性能提出了更高的要求。 然而,一个 App 产品在快速迭代的过程中总会也必然会留下一些技术债务,当一个 App 产品逐渐走向成熟、用户体量逐渐增多,也必然会面临一个问题:性能优化性能优化也成了移动开发工程师迈向高级工程师道路上一道避不开的坎,而这道坎,说实话门槛和学习成本还是挺高的。
App性能优化浅谈
巫山老妖
12-16 1万+
前言前段时间给公司的小伙伴们进行了关于app性能优化的技术分享,这里我稍微整理一下也给大家分享一下,关于性能优化这个话题很大,涉及面可以很广,也可以很深入,本人能力有限,不会给大家讲特别难懂,特别底层的东西,都是我们开发能着手去做的点,大家都在讲性能优化,但对于项目经验不够丰富的朋友很难有一个概念,做优化的时候也会比较茫然,这里我就给大家指明方向。从何讲起?笔者在做产品开发的时候,也遇到性能瓶颈,测
APP优化方案
Smile.L.B的博客
05-21 1233
布局优化:https://juejin.im/post/5e41fb7de51d4526c80e9108 包体积优化:https://juejin.im/post/5e7ad1c0e51d450edc0cf053 稳定性:https://juejin.im/post/5e69a4fd51882549003d2f0e 启动优化:https://jsonchao.github.io/
Android 优化布局层次结构
maozhuxigood
12-30 161
  前面介绍过使用HierarchyViewer和Android lint来优化我们的程序,这一篇算是总结性的,借助一个小例子来说用怎么优化应用布局。这个例子是android官网给出的,作者也当一把翻译。 多数开发者可能会这样认为,使用基本的布局结构会产生高效的布局性能,其实这个想法是不完全正确的。我们每一个添加到应用的控件和布局,都需要初始化、布局、绘制,这些多是需要时间降低显示速度的。...
Android——APP性能如何优化
Yawn
07-06 773
1. 四个方面 可以把用户体验的性能问题主要总结为4个类别: 流畅 稳定 省电、省流量 安装包小 性能问题的主要原因归根到底,也就是内存使用、代码效率、合适的策略逻辑、代码质量、安装包体积这一类问题,整理归类如下: 主要就四点: 快:使用时避免出现卡顿,响应速度快,减少用户等待的时间,满足用户期望。 稳:减低 crash 率和 ANR 率,不要在用户使用过程中崩溃和无响应。 省:节省流量和耗电,减少用户使用成本,避免使用时导致手机发烫。 小:安装包小可以降低用户的安装成本。 2. 卡顿优化 按场景
Android 性能优化(六):启动优化的详细流程
最新发布
csdn_aiyang的博客
03-27 4845
业内常见的app启动过程阶段一般分为「启动阶段」和「首刷阶段」。启动阶段:指用户点击icon到见到app的首页,起点为的Activity的()。首刷阶段:指用户见到app的首页到首页列表内容展现起点为Activity的onCreate,终点列表的onAttachedToWindow()。为了确保启动优化量化指标的数据能稳定和完整。启动过程中App退后台用户未登录场景特殊场景下的开屏广告,比如有复杂的联动动效站外push、deeplink拉起。
Android 性能优化(一):闪退、卡顿、耗电、APK
热门推荐
csdn_aiyang的博客
07-11 4万+
性能优化自2008年智能时代开始,Android操作系统开启一路高歌智能机发展之路。时至今日Android系统性能已经非常流畅了。到了不同层次的开发者手里,技术水平参差不齐,使得应用安装到配置极好的手机上依然存在体验差的现象。App性能优化是提升用户体验的永恒主题,也成为工程者最终的使命。性能优化从用户体验角度有四个性能优化方向。
【凯子哥带你学Android】Andriod性能优化之列表卡顿——以“简书”APP为例
赵凯强
11-20 1万+
这几天闲得无聊,就打开手机上的开发者模式里面的“GPU过度绘制”功能,看看别家的App做的咋样,然后很偶然的打开了“简书”,然后就被它的过度绘制惊呆了,于是写了这篇性能分析的文章,从一个只有APK文件的角度,说下如何寻找布局中可能存在的性能问题,以及解决方案。本文章以简书Android最新版本1.9.1进行分析。GPU过度绘制 Hierarchy View SysTrace TraceView 总结
App性能优化小建议
qq_28273051的博客
03-16 1709
导语安卓大军浩浩荡荡,发展已近十个年头,技术优化日异月新,如今Android 8.0 Oreo 都发布了,Android系统性能已经非常流畅了。但是,到了各大厂商手里,改源码自定系统,使得Android原生系统变得鱼龙混杂,然后到了不同层次的开发工程师手里,因为技术水平的参差不齐,即使很多手机在跑分软件性能非常高,打开应用依然存在卡顿现象。另外,随着产品内容迭代,功能越来越复杂UI页面也越来越丰...
app android优化方案,Android App 性能优化方案
weixin_32257101的博客
05-25 307
1. 为什么需要性能优化?上面说到,在时间窗口期内开发出产品是极端重要的,但是虽然基本功能我们实现了,但是开发出来的产品代码运行的效率怎么样呢?我们的App用户给用户的体验如何呢?我们的App在低端机上经常ANR、闪退、卡顿等我们的App在其他分辨率上显示惨不忍睹?我们的App在不同网络的情况下如何处理的?我们的App体验如此之差,导致大量的用户流失。这些迫使我们认识到性能优化是非常重要,某种程度...
Android App优化方案梳理
南飞的孤雁
09-16 1580
1,内存优化: 1.1 使用android:largeHeap属性扩大app内存上限 1.2 一个ui界面有较多的、规律的、相对固定的图片时,将图片合并加载和绘制 1.3 使用线程池统一处理图片的加载,线程池数量根据cpu核数确定 1.4 使用内存缓存,缓存区大小设置为heapsize的1/8(经验值),不需使用弱引用 1.5 Bitmap使用RGB_565规格创建,降低单个Bitmap
android app 优化方案,Android性能优化-App启动优化
weixin_39778214的博客
05-25 169
通常用户期望app响应和加载速度越快越好。一个启动速度慢的app很可能会给用户留下不好的印象除了导致用户在应用市场上的打分低之外很有可能导致致用户直接卸载。这篇文章提供了优化app启动时间的方法。先解释了app进程启动的内部流程。然后讨论如何优化启动的性能。最后列出几个常见的启动问题和解决方案。一 启动内幕App启动可能发生在以下三种状态 之一每一种都会影响到展现给用户的时间冷启动、热启动和温启动...
诚选app优化方案
一念执着。c的博客
06-29 1299
解决大文件问题,目前发现整个项目打包的出来的文件过大 1.如图一、图二可以看到在Stat Parsed Gzip下文件的大小相差很大,目前从图三中可以看到两个属性productionSourceMap、ProductionGzip,productionSourceMap为true的时候会生成一些map文件(只是方便看源码),这样会导致额外的文件,代码的内容也被暴露,所以应该设置为false,减少额外文件产生,另外打包的应该开启Gzip压缩,目前看到ProductionGzip为false,可以设置为true
App 启动优化的各种方案以及实例
孔维伟的博客
03-14 1064
子曰:温故而知新,可以为师矣。 《论语》-- 孔子 作为性能优化专栏的第二篇,我会详细介绍 App启动优化。阅读本文章前可以先阅读 (一)Android 黑白屏由来以及解决方案,再阅读本篇文章效果更佳。 一、App 启动优化介绍 1. 背景介绍 App 启动速度是用户的第一体验。 八秒定律:如果一个网页 8 秒未打开,70% 用户就会放弃等待,用户留存大大降低,这个定律也适合移动端。 ...
App电量优化方案
sg392361615的专栏
09-05 759
一.设备电量消耗情况排查    1.工具 Batterystats工具 ;收集设备电量消耗数据 Battery Historian工具; 将 Batterystats收集的数据转成html,方便在浏览器上查看(Battery Historian工具是开源项目,可以在github上搜索)   2.关注重点 在将数据转成html后 ,  我们主要关注设备的cpu ,屏幕唤醒 , 移动网络 , ...
APP性能优化
chenzimin_blog
05-24 2971
APP性能优化分:卡顿处理、耗电处理、安装包瘦身、APP启动四大方面。 文章目录1、卡顿处理1.1、卡顿分析1.2、卡顿优化1、CPU 优化2、GPU 优化离屏渲染1、离屏渲染消耗性能的原因2、哪些操作会触发离屏渲染?1.3、卡顿检测2、耗电处理2.1、好点主要来源2.2、耗电优化3、安装包瘦身4、APP的启动4.1、APP启动分类4.2、APP启动时间分析4.2.1、dyld 阶段4.2.2、runtime 阶段4.2.3、main4.3、APP启动优化5、问答拓展 1、卡顿处理 1.1、卡顿分析 APP
APP/网站性能优化方案汇总
戰士博客
04-03 817
1
探索APP性能优化之稳定性优化解决方案
Androiddddd的博客
08-08 1848
Android 稳定性优化是一个需要长期投入,持续运营和维护的一个过程,不仅深入探讨了 Java Crash、Native Crash 和 ANR 的解决流程及方案,还分析了其内部实现原理和监控流程。如果App到了线上才发现异常,其实已经造成了损失,所以稳定性优化重点在于预防重在预防、监控必不可少:从开发到测试到发布上线运维这些各个阶段都需要预防异常的发生,或者说要将发生异常造成的损失降到最低,用最小的代价暴露最多的问题,同时监控也是必不可少的一步,需要拥有一定的监控手段来更加灵敏的发现问题。...
移动App性能优化实践:内存、电量与流畅度
"移动App性能评测与优化" 是一本由TMQ专项测试团队编著的书籍,主要关注在项目扩张后如何进行移动App的性能评测和性能瓶颈的检测,适用于App性能优化领域的学习和实践。 内容详述: 本书分为四个章节,深入探讨了...
写文章

热门文章

  • 鸿蒙会成为安卓的终结者吗? 10812
  • 一份超详细的鸿蒙开发面经分享!上百道鸿蒙经典面试题整理~ 4260
  • 层层剥开Android14升级后异常弹框的神秘面纱 4163
  • MediaPlayer音频与视频的播放介绍 3859
  • 鸿蒙HarmonyOS应用开发——跨端迁移 3130

分类专栏

  • HarmonyOS 871篇
  • 移动开发 955篇
  • OpenHarmony 694篇
  • 鸿蒙开发 504篇
  • Arkui 7篇
  • 硬件开发 7篇
  • 面试 39篇
  • OkHttp 4篇
  • Android 226篇
  • 架构 47篇
  • Jetpack 1篇
  • Jetpack compose 21篇
  • Gradle 2篇
  • 性能优化 58篇
  • Framework 76篇
  • 设计模式 4篇
  • 车载开发 10篇
  • 职场与发展 3篇
  • 网络框架 4篇
  • 逆向 4篇
  • 音视频 3篇
  • 职场发展 3篇
  • Flutter 2篇
  • Aosp 1篇
  • 热修复 1篇
  • kotlin 2篇
  • 通信协议 1篇

最新评论

  • HarmonyOS Next开发学习手册——窗口管理

    杨焕鑫: 老师好,关于鸿蒙文章,想与您联系

  • 鸿蒙(HarmonyOS)性能优化实战-Web组件开发性能提升方案

    坐等富婆上钩: 那怎么拿控制web的控制器呢

  • HarmonyOS Next开发学习手册——文本输入 (TextInput/TextArea)

    阿冰哇: 为啥输入框不能输入中文?

  • HarmonyOS Next开发学习手册——获取并使用公共目录

    qq_35573526: 这个只能在2in1设备用 手机不行吧

  • Hi3861 通过UART串口协议与其它开发板进行通信

    KEY.P: 你好这个有串口发送数据吗

大家在看

  • 端口号的分类
  • C语言【调试】(个人笔记版) 671
  • 初始Python篇(3)—— 列表 796
  • 航天嵌入式关键系统软件研发中的挑战和措施 419
  • Python 代码实现了一个基于图卷积网络(GCN)和模型无关元学习(MAML)的模型,用于预测 circRNA 和疾病之间的关联

最新文章

  • OpenHarmony(鸿蒙南向)——平台驱动指南【PIN】
  • OpenHarmony(鸿蒙南向)——平台驱动指南【MIPI DSI】
  • OpenHarmony(鸿蒙南向)——平台驱动指南【MIPI CSI】
2024
08月 77篇
07月 217篇
06月 147篇
05月 173篇
04月 205篇
03月 107篇
02月 29篇
01月 6篇
2023年228篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

深圳坪山网站建设公司前山镇网站seo优化二七区一站式网站搭建优化网站META优化方法步骤上饶专业网站优化推广怎样优化网站功能搜索引擎网站优化有用吗贡觉县网站seo优化排名营销型网站建设与优化试题邯郸网站搜索优化排名要多少钱企业网站优化研究昆明网站万词优化乌兰察布网站优化机构网站怎么优化关键词排名鹰潭网站建设优化青岛谁优化网站做的好肇庆快速网站优化深圳利润高的免费网站优化上虞网站优化多少钱什么网站做优化最好?和田网站优化厂家宜城网站优化技术长春正规的网站关键词优化寮步网站优化推广皮革网站优化多少钱五常市网站seo优化排名网站排名优化系统静安区官网网站优化机构台湾网站搜索优化陵县网站优化seo益阳一站式营销型网站优化香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

深圳坪山网站建设公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化