我有一个活动,它有一些文本视图和其他数据每秒都要更新。
当我在TraceView中捕获日志和视图时,性能缓慢。 我看到很多调用ViewRoot.draw()函数。
在短短的4秒内完成25次通话,每秒几乎有6次通话。 理想情况下,它应该每秒呼叫一次。根据我最初的推测,我认为这是因为我的xml布局不好,这是真的吗?
我如何识别这么多电话的原因是什么? 这是减少这些电话的最佳方法吗?
答案 0 :(得分:1)
如果这些TextView的layout_width设置为WRAP_CONTENT,则更改文本将触发测量传递,因为它们的大小将发生变化。这肯定会变得昂贵。尝试将它们固定宽度。
答案 1 :(得分:0)
请找到下面的布局,
74次调用没问题,但是在大约3.5秒内对ViewRoot.draw()进行了25次调用 这意味着每秒钟就有6次要求抽奖。
我想知道为什么要打这么多电话?
<RelativeLayout
android:id="@+id/qd3"
android:layout_height="80px"
android:layout_width="156px"
android:layout_marginTop="4px"
android:layout_marginRight="2px"
android:layout_marginLeft="4px"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/qd2"
android:background="@drawable/btn_hl_vd_land"
android:clickable="true">
<FrameLayout
android:id="@+id/FrameCell3"
android:layout_height="wrap_content"
android:layout_width="wrap_content" >
<ImageView
android:id="@+id/qd3_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<ImageView
android:id="@+id/qd_vd_gloss"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/gloss_wt_tr_land"
/>
</FrameLayout>
</RelativeLayout>
<RelativeLayout
android:id="@+id/qd4"
android:layout_height="80px"
android:layout_width="156px"
android:layout_marginTop="4px"
android:layout_marginRight="2px"
android:layout_marginLeft="4px"
android:layout_below = "@+id/qd3"
android:layout_toRightOf="@+id/qd1"
android:background="@drawable/btn_hl_lp_land"
android:clickable="true"
>
<FrameLayout
android:id="@+id/FrameCell4"
android:layout_height="wrap_content"
android:layout_width="wrap_content" >
<ImageView android:id="@+id/ImageView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_wt_lp_bg_land"></ImageView>
<ImageView android:id="@+id/ImageView03"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
></ImageView>
<ImageView android:id="@+id/ImageView02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_wt_lp_num"></ImageView>
<ImageView
android:id="@+id/qd4_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/lpCountBig"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#000000"
android:textSize="50sp"
android:paddingTop="17px"
android:paddingLeft="65px"
/>
<TextView
android:id="@+id/lpCountSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#000000"
android:textSize="38sp"
android:paddingTop="22px"
android:paddingLeft="57px"
/>
</FrameLayout>
</RelativeLayout>
<RelativeLayout
android:id="@+id/qd2"
android:layout_height="80px"
android:layout_width="156px"
android:layout_marginTop="4px"
android:layout_marginLeft="2px"
android:layout_toRightOf = "@+id/qd1"
android:layout_alignParentLeft="true"
android:background="@drawable/btn_hl_qd2_land"
android:clickable="true">
<FrameLayout
android:id="@+id/FrameCell4"
android:layout_height="wrap_content"
android:layout_width="wrap_content" >
<ImageView
android:id="@+id/qd_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/divider_wt_qd_land"
/>
<ImageView
android:id="@+id/qd_time_gloss"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/gloss_wt_tl_land"
/>
</FrameLayout>
<RelativeLayout
android:id="@+id/qd_time"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/mDataOne"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:textColor="#000000"
android:textSize="44sp"
android:layout_alignParentRight="true"
android:paddingRight="8px"
android:paddingTop="2px"
/>
<TextView
android:id="@+id/mDataFive"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:textColor="#000000"
android:textSize="44sp"
android:layout_alignParentRight="true"
android:paddingRight="8px"
android:paddingTop="2px"
/>
<TextView
android:id="@+id/mDataSeven"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:textColor="#000000"
android:textSize="44sp"
android:layout_alignParentRight="true"
android:paddingRight="8px"
android:paddingTop="2px"
/>
</RelativeLayout>
<RelativeLayout
android:id="@+id/qd_pc_sp"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:orientation="vertical"
>
<TextView
android:id="@+id/mDataTwo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:textColor="#000000"
android:textSize="44sp"
android:layout_alignParentRight="true"
android:paddingTop="43px"
android:paddingRight="8px"
/>
<TextView
android:id="@+id/mutOne"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:layout_gravity="right"
android:textColor="#000000"
android:layout_alignParentLeft="true"
android:layout_alignBaseline="@+id/mDataTwo"
android:paddingLeft="10px"
/>
</RelativeLayout>
</RelativeLayout>
<RelativeLayout
android:id="@+id/qd1"
android:layout_height="80px"
android:layout_width="156px"
android:layout_marginTop="4px"
android:layout_marginLeft="2px"
android:layout_alignParentLeft="true"
android:layout_below="@+id/qd2"
android:background="@drawable/btn_hl_qd1_port"
android:clickable="true">
<FrameLayout
android:id="@+id/FrameCell1"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:background="@drawable/btn_wt_bl_land" >
<ImageView
android:id="@+id/qd1_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<ImageView
android:id="@+id/map_signal_sought"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/map_wt_overlay_default_land"
android:clickable="true"/>
<ImageView
android:id="@+id/map_seeking_signal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
<ImageView
android:id="@+id/map_gloss"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/gloss_wt_bl_land"
/>
</FrameLayout>
<FrameLayout
android:id="@+id/FrameCellMap"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
>
<ImageView
android:id="@+id/map_gloss"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/gloss_wt_bl_land"
/>
</FrameLayout>
</RelativeLayout>
<RelativeLayout
android:id="@+id/qd4_hr"
android:layout_height="80px"
android:layout_width="156px"
android:layout_marginTop="4px"
android:layout_marginRight="2px"
android:layout_marginLeft="4px"
android:layout_below = "@+id/qd3"
android:layout_toRightOf="@+id/qd1"
android:background="@drawable/btn_hl_lp_land"
android:clickable="true"
>
<ImageView
android:id="@+id/qd4_image_z"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<ImageView
android:id="@+id/qd4_image_divider"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/divider_wt_qd_land"
/>
<FrameLayout
android:id="@+id/FrameCell1"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
>
<TextView
android:id="@+id/curzValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#000000"
android:textSize="46sp"
android:layout_gravity="right|bottom"
android:paddingRight="8px"
android:layout_marginBottom="32px"
/>
<TextView
android:id="@+id/curzName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#000000"
android:textSize="38sp"
android:textStyle="bold"
android:layout_gravity="right|bottom"
android:paddingRight="8px"
/>
</FrameLayout>
<TextView
android:id="@+id/curz"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#000000"
android:textSize="18sp"
android:text="@string/hr_z_cardio"
android:layout_alignParentBottom="true"
android:paddingLeft="10px"
android:paddingBottom="5px"
/>
<ImageView
android:id="@+id/qd_lp_gloss"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/gloss_wt_br_land"
/>
<ImageView android:id="@+id/gUpDown"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:visibility="invisible"
android:layout_marginBottom="5px"
android:background="@drawable/ic_wt_z_ad_lg"
/>
</RelativeLayout>
<RelativeLayout android:orientation="horizontal"
android:gravity="bottom" android:layout_height="wrap_content"
android:id="@+id/mControls"
android:layout_width="wrap_content">
<include layout="@layout/m" />
</RelativeLayout>
<RelativeLayout android:orientation="horizontal"
android:gravity="bottom" android:layout_height="wrap_content"
android:id="@+id/tWtCons"
android:visibility="invisible"
android:layout_width="wrap_content">
<include layout="@layout/st_wt" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/qd3"
android:layout_height="80px"
android:layout_width="156px"
android:layout_marginTop="4px"
android:layout_marginRight="2px"
android:layout_marginLeft="4px"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/qd2"
android:background="@drawable/btn_hl_vd_land"
android:clickable="true">
<FrameLayout
android:id="@+id/FrameCell3"
android:layout_height="wrap_content"
android:layout_width="wrap_content" >
<ImageView
android:id="@+id/qd3_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<ImageView
android:id="@+id/qd_vd_gloss"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/gloss_wt_tr_land"
/>
</FrameLayout>
</RelativeLayout>
<RelativeLayout
android:id="@+id/qd4"
android:layout_height="80px"
android:layout_width="156px"
android:layout_marginTop="4px"
android:layout_marginRight="2px"
android:layout_marginLeft="4px"
android:layout_below = "@+id/qd3"
android:layout_toRightOf="@+id/qd1"
android:background="@drawable/btn_hl_lp_land"
android:clickable="true"
>
<FrameLayout
android:id="@+id/FrameCell4"
android:layout_height="wrap_content"
android:layout_width="wrap_content" >
<ImageView android:id="@+id/ImageView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_wt_lp_bg_land"></ImageView>
<ImageView android:id="@+id/ImageView03"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
></ImageView>
<ImageView android:id="@+id/ImageView02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_wt_lp_num"></ImageView>
<ImageView
android:id="@+id/qd4_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/lpCountBig"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#000000"
android:textSize="50sp"
android:paddingTop="17px"
android:paddingLeft="65px"
/>
<TextView
android:id="@+id/lpCountSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#000000"
android:textSize="38sp"
android:paddingTop="22px"
android:paddingLeft="57px"
/>
</FrameLayout>
</RelativeLayout>
<RelativeLayout
android:id="@+id/qd2"
android:layout_height="80px"
android:layout_width="156px"
android:layout_marginTop="4px"
android:layout_marginLeft="2px"
android:layout_toRightOf = "@+id/qd1"
android:layout_alignParentLeft="true"
android:background="@drawable/btn_hl_qd2_land"
android:clickable="true">
<FrameLayout
android:id="@+id/FrameCell4"
android:layout_height="wrap_content"
android:layout_width="wrap_content" >
<ImageView
android:id="@+id/qd_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/divider_wt_qd_land"
/>
<ImageView
android:id="@+id/qd_time_gloss"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/gloss_wt_tl_land"
/>
</FrameLayout>
<RelativeLayout
android:id="@+id/qd_time"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/mDataOne"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:textColor="#000000"
android:textSize="44sp"
android:layout_alignParentRight="true"
android:paddingRight="8px"
android:paddingTop="2px"
/>
<TextView
android:id="@+id/mDataFive"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:textColor="#000000"
android:textSize="44sp"
android:layout_alignParentRight="true"
android:paddingRight="8px"
android:paddingTop="2px"
/>
<TextView
android:id="@+id/mDataSeven"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:textColor="#000000"
android:textSize="44sp"
android:layout_alignParentRight="true"
android:paddingRight="8px"
android:paddingTop="2px"
/>
</RelativeLayout>
<RelativeLayout
android:id="@+id/qd_pc_sp"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:orientation="vertical"
>
<TextView
android:id="@+id/mDataTwo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:textColor="#000000"
android:textSize="44sp"
android:layout_alignParentRight="true"
android:paddingTop="43px"
android:paddingRight="8px"
/>
<TextView
android:id="@+id/mutOne"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:layout_gravity="right"
android:textColor="#000000"
android:layout_alignParentLeft="true"
android:layout_alignBaseline="@+id/mDataTwo"
android:paddingLeft="10px"
/>
</RelativeLayout>
</RelativeLayout>
<RelativeLayout
android:id="@+id/qd1"
android:layout_height="80px"
android:layout_width="156px"
android:layout_marginTop="4px"
android:layout_marginLeft="2px"
android:layout_alignParentLeft="true"
android:layout_below="@+id/qd2"
android:background="@drawable/btn_hl_qd1_port"
android:clickable="true">
<FrameLayout
android:id="@+id/FrameCell1"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:background="@drawable/btn_wt_bl_land" >
<ImageView
android:id="@+id/qd1_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<ImageView
android:id="@+id/map_signal_sought"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/map_wt_overlay_default_land"
android:clickable="true"/>
<ImageView
android:id="@+id/map_seeking_signal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
<ImageView
android:id="@+id/map_gloss"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/gloss_wt_bl_land"
/>
</FrameLayout>
<FrameLayout
android:id="@+id/FrameCellMap"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
>
<ImageView
android:id="@+id/map_gloss"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/gloss_wt_bl_land"
/>
</FrameLayout>
</RelativeLayout>
<RelativeLayout
android:id="@+id/qd4_hr"
android:layout_height="80px"
android:layout_width="156px"
android:layout_marginTop="4px"
android:layout_marginRight="2px"
android:layout_marginLeft="4px"
android:layout_below = "@+id/qd3"
android:layout_toRightOf="@+id/qd1"
android:background="@drawable/btn_hl_lp_land"
android:clickable="true"
>
<ImageView
android:id="@+id/qd4_image_z"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<ImageView
android:id="@+id/qd4_image_divider"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/divider_wt_qd_land"
/>
<FrameLayout
android:id="@+id/FrameCell1"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
>
<TextView
android:id="@+id/curzValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#000000"
android:textSize="46sp"
android:layout_gravity="right|bottom"
android:paddingRight="8px"
android:layout_marginBottom="32px"
/>
<TextView
android:id="@+id/curzName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#000000"
android:textSize="38sp"
android:textStyle="bold"
android:layout_gravity="right|bottom"
android:paddingRight="8px"
/>
</FrameLayout>
<TextView
android:id="@+id/curz"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#000000"
android:textSize="18sp"
android:text="@string/hr_z_cardio"
android:layout_alignParentBottom="true"
android:paddingLeft="10px"
android:paddingBottom="5px"
/>
<ImageView
android:id="@+id/qd_lp_gloss"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/gloss_wt_br_land"
/>
<ImageView android:id="@+id/gUpDown"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:visibility="invisible"
android:layout_marginBottom="5px"
android:background="@drawable/ic_wt_z_ad_lg"
/>
</RelativeLayout>
<RelativeLayout android:orientation="horizontal"
android:gravity="bottom" android:layout_height="wrap_content"
android:id="@+id/mControls"
android:layout_width="wrap_content">
<include layout="@layout/m" />
</RelativeLayout>
<RelativeLayout android:orientation="horizontal"
android:gravity="bottom" android:layout_height="wrap_content"
android:id="@+id/tWtCons"
android:visibility="invisible"
android:layout_width="wrap_content">
<include layout="@layout/st_wt" />
</RelativeLayout>