范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Android性能与视图层次结构查看,检查布局性能

  对 View 对象层次结构的管理方式会显著影响应用的性能。本页介绍如何评估视图层次结构是否减慢了应用的速度,并且还提供了一些针对可能出现的问题的解决策略。布局和度量性能
  渲染流水线包含"布局和度量"阶段,系统在此阶段以适当的方式将相关项放置在视图层次结构中。此阶段的度量部分确定 View 对象的大小和边界,布局部分确定 View 对象在屏幕上的放置位置。
  这两个流水线阶段在处理每个视图或布局时,都会产生少量开销。在大多数情况下,此开销很小,不会明显影响性能。不过,当应用添加或移除 View 对象时(例如在 RecyclerView 对象回收或重用 View 对象时),此开销会变大。如果 View 对象需要考虑调整大小来保持其约束,此开销也会增加:例如,如果您的应用对包围文本的 View 对象调用 SetText(),View 可能需要调整大小。
  如果这类操作花费的时间太长,可能会导致帧无法在允许的 16 毫秒内完成渲染,从而造成丢帧并使动画变得粗糙。
  由于您无法将这些操作移至工作器线程(您的应用必须在主线程上处理这些操作),因此最好的选择是对它们进行优化,使其花费尽可能少的时间。管理复杂性:布局很重要
  Android 布局允许您将界面对象嵌套在视图层次结构中。这种嵌套也会增加布局开销。当应用处理布局对象时,也会对布局的所有的对象执行相同的处理。对于复杂的布局,有时仅在系统第一次计算布局时才会产生开销。例如,当应用在 RecyclerView 对象中回收复杂的列表项时,系统需要列出所有对象。又如,细微的更改可以往上朝父级传播,直至到达不影响父级大小的对象为止。
  布局耗时过长最常见的情况是,View 对象的层次结构互相嵌套。每个嵌套的布局对象都会增加布局阶段的开销。层次结构越扁平,完成布局阶段所需的时间越少。
  如果使用 RelativeLayout 类,则可通过使用未设权重的嵌套 LinearLayout 视图,以更低的开销达到同样的效果。此外,如果您的应用面向 Android 7.0(API 级别 24)或更高版本,您可以使用特殊的布局编辑器来创建 ConstraintLayout 对象,而非 RelativeLayout。这样做可以避免本节中讲到的许多问题。ConstraintLayout 类提供类似的布局控制,但性能大大提高。该类使用自己的约束解析系统,采用与标准布局完全不同的方式来解析视图之间的关系。Double Taxation
  通常情况下,框架会在一次遍历中快速执行布局或度量阶段。但在一些情况比较复杂的布局中,在最终放置元素之前,框架可能必须对层次结构中需要多次遍历才能解析的部分执行多次迭代。必须执行不止一次"布局和度量"迭代的情况称为"Double Taxation"。
  例如,当您使用 RelativeLayout 容器时(该容器允许您根据其他 View 对象的位置来放置 View 对象),框架会执行以下操作:执行一次"布局和度量"遍历。在此过程中,框架会根据每个子对象的请求计算该子对象的位置和大小。结合此数据和对象的权重确定关联视图的恰当位置。执行第二次布局遍历,以最终确定对象的位置。进入渲染过程的下一个阶段。
  视图层次结构的层次越多,潜在的性能损失就越大。
  此外,RelativeLayout 以外的容器也可能会导致 Double Taxation。例如:将 LinearLayout 视图设置为水平方向,可能会导致执行双重"布局和度量"遍历。如果您添加 measureWithLargestChild,则垂直方向上也可能会发生双重"布局和度量"变化,因为在这种情况下,框架可能需要执行第二次遍历才能正确解析对象的大小。GridLayout 也有类似的问题。虽然该容器也允许相对定位,但它通常会通过预处理子视图之间的位置关系来避免 Double Taxation。不过,如果布局使用权重或使用 Gravity 类来填充,则会失去该预处理带来的好处,当容器为 RelativeLayout 时,框架可能必须执行多次遍历。
  多次"布局和度量"遍历本身并不是性能负担,但如果发生在错误的地方,就可能会变成负担。您应该警惕容器存在以下情况:它是视图层次结构中的根元素。它下面有较深的视图层次结构。屏幕中填充了它的许多实例,类似于 ListView 对象中的子对象。诊断视图层次结构问题
  布局性能是一个涉及许多方面的复杂问题。有几种工具可以为您提供关于性能瓶颈发生位置的明确提示。其他一些工具提供的信息不那么明确,但也能提供有用的提示。Systrace
  有一个工具可以提供关于性能的重要数据,那就是 Systrace,该工具内置在 Android SDK 中。利用 Systrace 工具,您可以在整个 Android 设备上收集和检查计时信息,从而了解布局性能问题何时导致性能问题。要详细了解 Systrace,请参阅系统跟踪概览。GPU 渲染分析
  另一款最有可能为您提供可靠的性能瓶颈信息的工具是设备端 GPU 渲染分析工具,该工具在搭载 Android 6.0(API 级别 23)及更高版本的设备上提供。通过此工具,您可以了解"布局和度量"阶段在每一帧渲染上花费的时间。此数据可以帮助您诊断运行时性能问题,以及确定需要解决哪些"布局和度量"问题(如果有)。
  在其捕获的数据的图形表示中,GPU 渲染分析使用蓝颜色来代表布局时间。要详细了解如何使用此工具,请参阅 GPU 渲染分析演示。Lint
  Android Studio 的 Lint 工具可以帮助您了解视图层次结构中的低效问题。要使用此工具,请依次选择 Analyze > Inspect Code,如图 1 中所示。
  图 1. 在 Android Studio 中找到 Inspect Code。
  Android > Lint > Performance 下面显示了有关各种布局项目的信息。要查看更多详情,可以点击各个项目将其展开,然后在屏幕右侧的窗格中会显示详细信息。图 2 显示了此界面的一个示例。
  图 2. 查看有关 Lint 工具发现的特定问题的信息。
  点击其中一个项目,右侧窗格中就会显示与该项目相关的问题。
  要详细了解该区域中显示的特定主题和问题,请参阅 Lint 文档。Layout Inspector
  Android Studio 的 Layout Inspector 工具提供关于应用视图层次结构的可视化表示。这是一种浏览应用层次结构的好方法,它提供关于特定视图父链的清晰的可视化表示,可帮助您检查应用构建的布局。
  Layout Inspector 提供的视图还可以帮助您确定由"Double Taxation"引起的性能问题。它还可以让您通过一种简便的方法来识别嵌套布局的深层链或具有大量嵌套智能的布局区域,这是导致性能下降的另一个潜在因素。在这两种情况下,"布局和度量"阶段的开销可能会特别大,从而导致性能问题。
  要了解详情,请参阅使用 Layout Inspector 调试布局。解决视图层次结构问题
  要解决由视图层次结构引起的性能问题,其背后的基本原理很简单,但实际操作起来却比较困难。防止因视图层次结构导致性能下降包括两个目标:一个是实现视图层次结构扁平化,一个是减少"Double Taxation"。本节将探讨实现这两个目标的一些策略。移除多余的嵌套布局
  开发者经常会过度使用嵌套布局。例如,可能会在 RelativeLayout 容器包含一个同样也是 RelativeLayout 容器的子级。这种嵌套实际是多余的,并且会给视图层次结构造成不必要的开销。
  Lint 通常可以为您标记此类问题,从而减少调试时间。采用 merge/include
  造成多余嵌套布局的一个常见原因就是  标记。例如,您可以定义一个类似如下的可重复使用的布局:                   
  然后,定义一个 include 标记将此项目添加到父容器中:                               ...         
  该 include 会将第一个布局嵌套在第二个布局中,而此嵌套是不必要的。
  merge 标记可以避免此问题。要了解此标记,请参阅通过  重复使用布局。采用开销较低的布局
  您可能无法调整现有的布局方案,使其不包含多余的布局。在某些情况下,唯一的解决方案可能是,通过切换到完全不同的布局类型来实现层次结构的扁平化。
  例如,您可能会发现,TableLayout 作为具有许多位置依赖项的更复杂的布局,可以提供相同的功能。在 Android 的 N 版本中,ConstraintLayout 类提供了与 RelativeLayout 类似的功能,但开销要低得多。

一台三年前的华为P30Pro,放到2022年,相当于什么价位的手机不知道大家还记不记得,在2019年横空出现这么一款手机,可以拍月亮,在当时来看绝对是匪夷所思,对,就是华为P30系列,当时最引以为傲的宣传卖点就是拍照,尤其P30Pro拥有的50倍手机收入苹果第一,三星第二,OPPO第三2021年全球智能手机总出货量13。4亿台左右,三星以2。715亿台的手机出货量位居全球第一,苹果以2。362亿台的手机出货量位居全球第二,小米以1。902亿台的手机出货量位居全球黑莓手机,难说再见智能手机尚未普及的年代,以全键盘为标志性特征的黑莓手机,简直就是手机界的神。黑莓手机后来还推出了向智能手机妥协的型号,兼具全键盘和触屏两种操作方式。对比当时主流的九键键盘,全键盘操陌生交友APP开发如何打破聊天尴尬问题?相信很多人都遇到过社交瓶颈,现在互联网社交产品可谓雨后春笋,层出不穷,各种社交软件都在屡出新招,目前常见的社交APP大致分为熟人社交和陌生社交两大类,不过熟人社交市场几乎完全被QQ俄罗斯SWIFT禁令相当于宣战2月27日消息,据美联社报道,针对美国及其盟国禁止俄多家银行使用SWIFT系统,俄罗斯表示,SWIFT禁令相当于宣战。据悉,该禁令旨在攫取俄罗斯的中央银行储备,并切断部分俄罗斯银行iPhoneSE3发布倒计时连手机壳都出来了文明美无限前段时间,小米发布了12系列,官方称这一系列是对标iPhone13,所以小米12和小米12X都采用了小屏设计,从市场反响来看,确实有很多用户对小屏手机青睐有加,而在即将到对流扩散布朗运动和分子热运动的异同对流,扩散,布朗运动和分子热运动在题目当中经常会出现判断的情况,我们尝试如何来快速判断。方法呢?还是从定义出发。对流指的是流体内部由于各部分温度不同而造成的相对流动,即流体(气体或iPhone11ProMax电池健康度85,若不换电池,我今年只能换新机了目前,我在用的iPhone11ProMax整体情况还是可以的,但是升级过两次iOS系统之后,这款手机的电池健康度直接降至了85。坦白地说,对于苹果手机的电池健康度,我还是比较在意的代表建议破解智能网联汽车发展痛点工信部答复支持企业在更大范围开展道路测试来源南方日报新能源和智能网联汽车正走进大众生活,如何解决配套设施不足充电难的问题?如何完善自动驾驶测试相关规定?去年,张红伟曾庆洪等多名在粤全国人大代表提出建议,呼吁破解新能源和智新技术为学生数学思维深化赋能案例简介本案例基于对数学理解层次的可视化探索,依托学校的网络学习空间开展智慧教学,充分发挥网络学习空间实时性生成性共享性开放性等特点,为学生搭建自主思考合作探究延展思维的智慧学习平47道基础的VueJS面试题(附答案)1什么是MVVM框架?它适用于哪些场景?MVVM框架是一个ModelViewViewModel框架,其中ViewModel连接模型Model)和视图(View)。在数据操作比较多的
当今互联网领域最牛逼的公司,他们其实恐惧焦虑得很,同意吗?现在互联网世界的好日子的确是过完了,在今年以来的反垄断大政策的背景下整个互联网企业的市值跌掉了10万亿,这还不能说明问题吗?这些企业的领导者每天都在焦虑,因为以前赚快钱赚习惯了,以以万单合一升级企业履约交付服务京东工业品打造智能供应链决策体系华能伊敏煤电公司位于鄂温克草原深处,由于地理位置偏僻,大部分常规物流都无法送达,这也使得华能伊敏日常物资运转的生命线全部依靠自有仓储人员到最近的县城每周自提。除了配送时效难以保证外RedmiK40使用2个月,我愿称它为好守门员,但它没有守住大门3月中旬入手的RedmiK40这款手机,买它的理由很简单,预算不足买不起旗舰手机,最终挑来挑去,还是选择了RedmiK40,毕竟人人都说Redmi主打性价比,卢伟冰做人厚道,甚至还新的一年怎么干丨坚持创新第一动力,加快推进科技自立自强交汇点讯全面推动重点项目攻关揭榜挂帅大力实施高新技术企业培育小升高行动高质量推进创新平台建设在今年的政府工作报告中,科技和创新元素涌动,一系列支持政策凸显政府实施创新驱动发展战略的摩托罗拉冲动了,12GB256GB降1100元,50倍变焦1亿像素巅峰时期的摩托罗拉手机,在全球来说是无人不知无人不晓!至于后来为什么摩托罗拉没落了,原因大家肯定都知道,那就是进入智能机时代后,摩托罗拉固步自封,没有小米OViPhone三星的魄力新能源反复被锤,什么该买入,什么要回避?丨投资人说嘉宾简介卢尧之,明河投资基金经理。5年制造业供应链管理与项目管理经验,5年二级市场投研经历南京大学自动化本科,上海交通大学工商管理硕士。基于在制造业的多年供应链管理与项目引进经验,Rust学习笔记(五十九)宏宏macro宏在Rust里是指一组相关特性的集合称谓使用macrorules!构建的声明宏(declarativemacro)3种过程宏自定义derive宏,用于struct或en再见,iphone7plus我于2017年入手的这台iphone7plus当时在同时期的手机中,无论是性能还是屏幕显示,都是顶级旗舰的水平。如今作为备用机,也有些力不从心了。概述A10Fusion是iphon旷视连续三年发布全球十大人工智能治理事件,共建负责任的AI2022年1月12日,由人民智库与旷视AI治理研究院成立联合课题组,中国人工智能产业发展联盟(AIIA)为课题支持单位,共同开展的2021年度全球十大人工智能治理事件(以下简称十大高途课堂网易有道希望学开启线上学科招生实习记者陈振芳1月21日,高途课堂网易有道希望学三家学科类培训机构宣布开启招生,教培以非营利形式归来。高途课堂网易有道均表示,已于2021年12月31日完成剥离义务教育阶段学科培训万字解读Telegram发家史PavelDurov如何变成Facebook反抗者钛媒体注本文来自readthegeneralist,原文作者TheGeneralist创始人兼主编MarioGabriele,Odaily星球日报译者Moni内容概述1Telegr