Comment tester les performances de la vue personnalisée
Je souhaite tester les performances de rendu de l'interface utilisateur de mon composant personnalisé. J'ai utilisé le cas de test suivant pour vérifier les performances de rendu.
private long getLayoutTime(int layoutRes) {
final Context targetContext = getInstrumentation().getTargetContext();
final LayoutInflater layoutInflater = LayoutInflater.from(targetContext);
final long startTime = System.currentTimeMillis();
for (int i = 0; i < 1000; i++) {
final View view = layoutInflater.inflate(layoutRes, null);
view.setLayoutParams(new ViewGroup.LayoutParams(0, 0));
view.measure(View.MeasureSpec.makeMeasureSpec(1000, View.MeasureSpec.EXACTLY), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
final int measuredHeight = view.getMeasuredHeight();
final int measuredWidth = view.getMeasuredWidth();
view.layout(0, 0, measuredWidth, measuredHeight);
}
return System.currentTimeMillis() - startTime;
}
En utilisant ce code, je peux tester la synchronisation du rendu de la disposition. J'ai donc changé la conception de la mise en page pour de meilleures performances. Maintenant, je crée une classe de vue personnalisée avec plusieurs mises en page et composants tels que des images, des vues de texte, etc. Je vais attacher la classe au moment de l'exécution et les composants créeront au moment de l'exécution en fonction de la réponse du serveur. Je n'attacherai pas ce composant personnalisé en XML. Je souhaite maintenant tester les performances de rendu de cette vue personnalisée. Veuillez me suggérer des outils ou tout moyen de calculer le temps de rendu de l'interface utilisateur pour la vue personnalisée.
Mon image Profiler.

Réponses
vous pouvez facilement mesurer les performances en utilisant le profileur d'outil intégré d'Android Studio (dans le panneau inférieur gauche). important: les performances de la vue client dépendent d'un appareil en cours d'exécution voici un exemple que j'ai testé pour redmi 7a
appareil: redmi 7a RAM: 2 Go
private fun startTest() {
for (x in 0..10000) {
val textview = TextView(this)?.apply { text = "Dummy Text $x" }
mLinearLayout?.addView(textview)
}
}
- exécuter un projet
- démarrer le profileur, attendre que le graphique devienne normal
- sur le bouton Cliquez sur startTest (), vous verrez le graphique est devenu normal à élevé
- sélectionnez la zone qui couvre la zone haute du graphique et voyez l'heure de début et l'heure de fin
- utiliser une simple calculatrice et mesurer les différences
le résultat de mon cas de test: l'ajout de textview 10000 fois dans linearlayout prend 32.411s (informations sur l'appareil données ci-dessus)
