Dans l'application que j'écris, j'ai un tas de statistiques que je veux afficher pour l'utilisateur. Les statistiques comprennent la dernière exécution d'un module spécifique, son exécution la plus proche, la dernière communication avec le serveur et la suivante.Android - Mise à jour efficace des compteurs dans les vues
En plus de cela, il y a des choses comme l'utilisation de la mémoire (utilisation de la mémoire simple, ne pas mesurer l'utilisation réelle).
L'utilisation de la mémoire, etc peut être mis à jour toutes les quelques secondes afin que pas un problème, mais les temps doivent être mis à jour chaque seconde au moins (pour les compteurs).
Étant donné que l'exécution toutes les secondes (ou même avec une période de 500 ms) entraîne des mises à jour irrégulières/secondes ignorées, je l'exécute maintenant à 300 ms.
J'ai remarqué cependant que mon application a commencé à ralentir au démarrage.
Après un certain profilage, il s'avère que ce sont les vues qui ont besoin de redimensionner qui prennent 70% du temps et le formateur de chaîne (pour le formatage du compteur) prend à peu près le reste. En dehors de la CPU utilisée, je vois beaucoup d'allocations, toutes les quelques secondes je vois un GC_CONCURRENT dans le logcat.
Des conseils pour résoudre ce problème efficacement?
Question stupide: Utilisez-vous un fil séparé pour les calculs? –
Non, je ne pense pas que ce serait important si je le faisais puisque la plupart du temps est passé à redimensionner des vues qui ne peuvent être effectuées qu'à partir du thread principal de l'interface utilisateur. –
Vous ne devez effectuer aucun travail intensif sur le thread d'interface utilisateur. –