层次结构查看器中的绘制时间错误了吗?

时间:2011-06-28 22:14:45

标签: android android-sdk-tools

我正在使用Android SDK附带的Hierarchy Viewer工具进行一些测试。

我正在测试的Activity具有以下xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <TextView
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="@string/hello"
        android:layout_alignParentTop="true"/>

    <TextView android:id="@+id/slow_measure"
        android:layout_width="fill_parent"
        android:layout_height="30dp"
        android:text="Slow Measure"
        android:layout_alignParentBottom="true"/>

    <TextView android:id="@+id/slow_layout"
        android:layout_width="fill_parent"
        android:layout_height="30dp"
        android:text="Slow Layout"
        android:layout_above="@id/slow_measure"/>

    <com.test.SlowDrawView android:id="@+id/slow_draw"
        android:layout_width="fill_parent"
        android:layout_height="30dp"
        android:background="#FF0000"
        android:text="Slow Draw"
        android:layout_above="@id/slow_layout"/>
</RelativeLayout>

SlowDrawView扩展TextView,但我修改了onDraw(),如下所示:

@Override
protected void onDraw(Canvas canvas) {
    try {
        Thread.sleep(3000L);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    super.onDraw(canvas);
}

当我在hv中检查这个View的抽奖时间时,我注意到小于3秒,这没有任何意义。

有关为何发生这种情况的任何想法? 我还注意到在android git repo中有两个版本的hv。谁知道差异?

1 个答案:

答案 0 :(得分:0)

看起来层次结构查看器在其测量中使用“线程时间”而不是“挂钟时间”。这意味着它不会一直计算线程正在等待来自另一个线程的某些结果(阻塞它)或线程休眠时间,如示例所示。

我在Android CPU Monitor中检查了它,它确认了我的想法。

您可以通过一些繁重的操作加载主线程,以查看线程时间如何增加。我这样做是为onDraw()onLayout()编号为39的递归Fibonacci算法:

 @Override
protected void onDraw(Canvas canvas) {
  super.onDraw(canvas);
  fib(39);
}

public static int fib(int n) {
    if (n == 0 || n == 1) {
      return 1;
    } else {
      return fib(n - 1) + fib(n - 2);
    }
  }

enter image description here

enter image description here