4

使用HierarchyViewer工具,您可以检查应用程序的布局层次结构。这很好用,我可以毫无问题地分析我的观点。我还使用Lint检查了我的来源。

优化 UI中所述,颜色表示视图可以测量、布局和绘制的速度。

性能指标:一组三个彩色点,表示此视图相对于树中其他视图对象的渲染速度。三个点代表(从左到右)渲染的度量、布局和绘制时间:

颜色表示以下相对性能:

  • 绿色:对于这部分渲染时间,此视图在树中所有视图对象的 50% 中较快。例如,测量时间的绿点表示此视图的测量时间比树中 50% 的视图对象更快。
  • 黄色:对于这部分渲染时间,此视图在树中所有视图对象的 50% 中较慢。例如,布局时间的黄点表示此 View 的布局时间比树中 50% 的 View 对象慢。
  • 红色:对于这部分渲染时间,此视图是树中最慢的视图。例如,绘制时间的红点表示该视图在树中的所有视图对象中绘制时间最长。

这意味着“仅”一个红色灯泡意味着与树中的所有其他项目相比,特定项目是最慢的。这并不意味着时间比 X 值慢,因此它被读取 - 就像你从 ping 分析工具中知道的那样,这些工具以交通信号灯的方式显示其结果,用于测量 ping 的“慢、中、快”次。

在检查了我的应用程序的不同视图后,我注意到输入字段比文本字段慢,然后LinearLayouts更快FragmentLayouts,还有一些类似的东西。然后,我搜索了有关改进某些视图的绘制时间的信息和帮助。但是那个搜索对我来说不是很满意。

谷歌优化你的用户界面告诉你:

使用视图层次结构进行优化

View Hierarchy 还可以帮助您识别缓慢的渲染性能。您首先查看带有红色或黄色性能指标的 View 节点,以识别速度较慢的 View 对象。当您逐步浏览您的应用程序时,您可以判断视图是始终缓慢还是仅在某些情况下缓慢。

请记住,性能缓慢不一定是问题的证据,尤其是对于 ViewGroup 对象。具有更多子级和更复杂视图对象的视图对象渲染速度更慢。

View Hierarchy 窗口还可以帮助您查找性能问题。只需查看每个 View 节点的性能指标(点),您就可以看到哪些 View 对象的测量、布局和绘制速度最慢。由此,您可以快速确定您应该首先查看的问题。

在我的选择中或多或少告诉你什么。在另一页Revise Your Layout有一个小例子,其中两个文本视图在 a 中LinearLayout并放在 aRelativeLayout中,这样一个层次结构就消失了。

在使用 Lint部分中可以找到更多提示:

  • 使用复合可绘制对象 - 包含 ImageView 和 TextView 的 LinearLayout 可以更有效地作为复合可绘制对象处理。
  • 合并根框架 - 如果 FrameLayout 是布局的根并且不提供背景或填充等,则可以将其替换为更有效的合并标记。
  • 无用的叶子 - 通常可以删除没有子元素或没有背景的布局(因为它是不可见的)以获得更平坦和更有效的布局层次结构。
  • 无用的父级 - 具有子级的布局,没有兄弟级,不是 ScrollView 或根布局,并且没有背景,可以删除并将其子级直接移动到父级中,以获得更平坦和更有效的布局层次结构。
  • 深度布局 - 嵌套过多的布局不利于性能。考虑使用更扁平的布局,例如 RelativeLayout 或 GridLayout 来提高性能。默认最大深度为 10。

但是我仍然想念一些(经过验证的)答案和提示,如何设计好的视图层次结构或哪些视图元素不应该(大量)与外部元素一起使用/组合。像你这样的东西应该sparley使用layout_weight,因为它会降低性能(修改你的布局)。

在分析的 lint 中有一些有用的措辞,例如

在此元素上设置 android:baselineAligned="false" 以获得更好的性能

所以我现在的问题是:您知道哪些技巧/提示/“代码样式”可以提高您的 UI 性能?应该使用哪些视图元素而不是其他视图元素,因为它们表现更好?您如何提高布局性能?

4

0 回答 0