如何改善视图层次结构和布局性能?

时间:2013-09-06 10:19:11

标签: android performance android-layout lint hierarchyviewer

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

Optimizing Your UI中所述,颜色代表视图测量,布局和绘制的速度。

  

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

     

颜色表示以下相对表现:

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

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

在检查了我的应用程序的不同视图后,我注意到输入字段比文本字段慢,LinearLayoutsFragmentLayouts更快,有些像这样。然后,我搜索了一些信息并帮助改善了我的一些观点的绘制时间。 但那次搜索对我来说并不是很令人满意。

谷歌Optimizing Your UI告诉你:

  

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

     

View Hierarchy还可以帮助您识别缓慢的渲染性能。首先查看具有红色或黄色性能指示器的View节点,以识别较慢的View对象。当您单步执行应用程序时,您可以判断View仅在某些情况下是缓慢还是缓慢。

     

请记住,缓慢的性能不一定是问题的证据,特别是对于ViewGroup对象。查看具有更多子项和更复杂View对象的对象渲染速度更慢。

     

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

在我的选择中,或多或少没有告诉你什么。在另一页Revise Your Layout上有一个小例子,其中LinearLayout内的两个文本视图放在RelativeLayout内,以便一个层次结构消失。

Use Lint部分提供了更多提示:

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

但我仍然想念的是一些(校对的)答案和提示如何设计好的视图层次或哪些视图元素不应该(大量)使用/与其他元素组合。像你这样的东西应该使用layout_weight,因为它会降低性能(Revise Your Layout)。

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

  

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

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

0 个答案:

没有答案
相关问题