and*_*rei 8 android hierarchyviewer
我试图了解层次结构视图.
所以我在developer.android.com上阅读三个点的含义:
绿色:对于渲染时间的这一部分,此视图占树中所有View对象的50%.例如,测量时间的绿点表示此视图的测量时间比树中View对象的50%快.
黄色:对于渲染时间的这一部分,此视图位于树中所有View对象的较慢50%中.例如,布局时间的黄点表示此视图的布局时间比树中View对象的50%慢.
红色:对于渲染时间的这一部分,此视图是树中最慢的视图.例如,绘制时间的红点表示此视图占用树中所有View对象的最多时间.
如果我没有弄错的话,这并不意味着最多应该有3个带红点的视图(每个类别的最慢视图:测量,布局,绘制),然后一半视图黄色和半绿色.
首先,我看到超过3个带有红点的视图,我不明白为什么.
其次,考虑到这些值是相对值,我看不出这些值如何有助于提高性能.总有一半的观点比另一半更快.
看着树视图我看到的视图visibility gone有一个小的绘制时间.不应该完全忽视GONE的观点吗?
如果我没记错的话,这是否意味着最多应该有 3 个带有红点的视图
你的逻辑很好,但是文档不能说是树,而是说是一个节点。用于获取这 3 个点的层次结构查看器的 tool4s 功能是Profile Node,这将开始分析从所选节点(树的任意根)到树的末尾的树。
每个View包含多个 View 的ViewGroup(布局基于 ViewGroup)都会有点。在相反的情况下没有点。
因此,仅在节点级别进行比较,而不是对所有树进行比较,这就是为什么您可以为所有树获得三个以上的红点(一个用于测量,一个用于布局,一个用于绘制),但不能为一个节点。
其次,考虑到这些值是相对值,我不明白这些值如何帮助提高性能。总会有一半的浏览速度比另一半快。
点可帮助您了解视图组中的哪个视图测量/布局/绘制最慢。为了避免屏幕冻结,一次操作的总时间必须低于 16.6 毫秒(Android 应保持每秒 60 帧的帧速率)。
红点只会提示您应该分析哪个视图,但这并不意味着视图没有优化,尤其是在具有大量子视图的复杂层次结构中。
此外,如果您必须构建自定义视图,层次结构查看器可以帮助您了解是否正确执行快速渲染。
我看到
visibility gone的视图绘制时间很短。难道不应该完全忽略 GONE 视图吗?
View可见性设置为 的AGONE不会通过onMeasure、onLayout和onDraw。如果您扩展一个像 TextView 这样的小部件并使用 Log.d 覆盖这些方法来了解会发生什么,您可以轻松地尝试它。
但我猜绘制的时间到来了,因为视图将被创建,然后附加到窗口并最终更改其可见性。
TextView 的示例。第一步,通过 java 构造函数创建对象public Text(Context context, AttributeSet attrs){...},然后执行附加窗口的调用protected void onAttachedToWindow() {...},并更改可见性protected void onWindowVisibilityChanged(int visibility) {}
现在,如果您想调试更多 UI,请尝试使用具有“开发人员选项”选项的手机Debug GPU Overdraw(并非所有手机都有该选项)或使用模拟器。然后您可以看到应用程序在哪里过度绘制,然后优化您的界面。
调试 GPU 过度绘制演练
| 归档时间: |
|
| 查看次数: |
1052 次 |
| 最近记录: |