2010-11-10 6 views
2

J'ai une activité qui a des vues de texte et d'autres données à mettre à jour chaque seconde.Appels énormes effectués à ViewRoot.draw()

La performance est lente et lorsque je capture les journaux et afficher dans TraceView. Je vois à beaucoup d'appels ont été faits à la fonction ViewRoot.draw().

25 appels sur une courte durée de 4 secondes, presque 6 appels toutes les secondes. Idéalement parlant, il devrait être une fois appeler toutes les secondes.

Selon ma spéculation initiale je crois que c'est dû à la mauvaise disposition de mon xml, est-ce vrai?

Comment identifier la raison d'un si grand nombre d'appels? quel est le meilleur moyen de réduire ces appels?

Répondre

1

Si ces textView ont leur layout_width défini sur WRAP_CONTENT, la modification du texte déclenchera un passage de mesure car leur taille aura changé. Cela pourrait certainement coûter cher. Essayez de les rendre à largeur fixe.

+0

S'il y a huit vues de texte dans ma mise en page, avec tous étant wrap_content, modifie le contenu de ceux-ci déclencherait huit séparés re-rendu ou si ce sera intelligemment multiplexés à un appel unique où tous les les vues de texte sont modifiées? –

+0

En gardant à l'esprit ce qui est important, ce que vous venez de mentionner, quelles sont les autres directives générales qui devraient être suivies pour réduire le nombre d'appels à re-rendre? Aussi je vois beaucoup d'appels étant faits à Android.dispatch message() près de 75 appels en 4 secs, en dehors de déclenché par les entrées de l'utilisateur comment détecter qui d'autre déclenche ces nombreux appels? –

+0

TraceView devrait vous montrer exactement ce qui appelle quoi. Que diriez-vous de coller votre mise en page XML ici? En outre, 75 messages thread UI en 4 secondes ne me semble pas mal ... peut-être que vous optimisez au mauvais endroit? Où traceview dit-il que le plus grand% d'âge du temps CPU exclusif est? –

0

S'il vous plaît trouver ci-dessous la mise en page,

74 appels est ok, mais 25 appels sont été fait à ViewRoot.draw() dans environ 3,5 secondes qui signifie 6 appels à tirage chaque seconde qui est mauvais.

Je veux savoir pourquoi tant d'appels sont faits?

<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> 

Questions connexes