使用工具HierarchyViewer,您可以检查应用的布局层次结构。这很好,我没有问题来分析我的观点。我还用Lint检查了我的来源。
如Optimizing Your UI中所述,颜色代表视图测量,布局和绘制的速度。
性能指标:一组三个彩色圆点,指示此视图相对于树中其他View对象的渲染速度。这三个点代表(从左到右)渲染的度量,布局和绘制时间:
颜色表示以下相对表现:
- 绿色:对于渲染时间的这一部分,此视图位于树中所有View对象的50%中。例如,测量时间的绿点表示此视图的测量时间比树中View对象的50%快。
- 黄色:对于渲染时间的这一部分,此视图位于树中所有View对象的较慢50%中。例如,布局时间的黄点表示此视图的布局时间比树中View对象的50%慢。
- 红色:对于渲染时间的这一部分,此视图是树中最慢的视图。例如,绘制时间的红点表示此视图占用树中所有View对象的最多时间。
这意味着“仅”一个红色灯泡意味着与树中的所有其他项目相比,特定项目是最慢的项目。这并不意味着时间比X值慢,并且因为它被读取 - 就像你所知道的那样让我们说ping分析工具以交通灯方式显示他们的结果“慢,中,快”关于测量的ping次。
在检查了我的应用程序的不同视图后,我注意到输入字段比文本字段慢,LinearLayouts
比FragmentLayouts
更快,有些像这样。然后,我搜索了一些信息并帮助改善了我的一些观点的绘制时间。
但那次搜索对我来说并不是很令人满意。
谷歌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的性能?应该使用哪些视图元素而不是其他元素,因为它们的性能更好?你怎么做才能改善布局表现?