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