Android 层次查看器中的绘制时间错误?
我正在使用Android SDK附带的Hierarchy Viewer工具进行一些测试 我正在测试的Android 层次查看器中的绘制时间错误?,android,android-sdk-tools,Android,Android Sdk Tools,我正在使用Android SDK附带的Hierarchy Viewer工具进行一些测试 我正在测试的活动具有以下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_
活动
具有以下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>
当我检查hv中此视图的绘制时间时,我注意到小于3个格,这没有任何意义
你知道为什么会这样吗?
我还注意到android中有两个版本的hv。有人知道区别吗?层次结构查看器在其测量中似乎使用了“线程时间”而不是“挂钟时间”。这意味着它不计算线程等待另一个线程(阻塞它)的结果的所有时间,也不计算线程睡眠时间,如您的示例所示
我在安卓CPU监视器上查看了它,它证实了我的想法
您可以使用一些繁重的操作加载主线程,以查看线程时间是如何增加的。我在onDraw()
和onLayout()
中调用了数字39的递归斐波那契算法:
@Override
protected void onDraw(Canvas canvas) {
try {
Thread.sleep(3000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
super.onDraw(canvas);
}
@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);
}
}