Améliorez les temps de démarrage des applications Android comme Facebook et Google Do – InfoQ

Dans un article récent, les ingénieurs de Google et Facebook ont ​​fourni leurs conseils sur ce qui compte le plus pour réduire le temps nécessaire à une application Android pour devenir réactive au lancement et assurer une expérience utilisateur optimale.

Le démarrage d’une application est un facteur clé pour maintenir l’engagement des utilisateurs et accroître l’adoption, déclarent les ingénieurs de Facebook. La première étape pour améliorer les temps de démarrage d’une application consiste à les mesurer à l’aide de deux métriques standard Android : Time-To-Full-Display (TTFD), qui est le temps qu’il faut pour qu’une application soit prête pour l’interaction avec l’utilisateur, et Time-To -Initial-Display (TTID), qui mesure le temps nécessaire pour qu’une application devienne minimalement fonctionnelle, permettant par exemple à l’utilisateur de naviguer tout en téléchargeant du contenu.

Selon l’application, TTFD peut être une métrique plus pertinente que TTID, ou vice-versa, mais TTID est toujours inclus dans TTFD, donc TTID est un bon point de départ pour l’optimisation. De plus, TTID est utilisé par Google pour classer les applications dans les listes de Google Play.

La métrique de démarrage de Facebook est le pourcentage de démarrages d’applications qu’ils considèrent comme « mauvais », c’est-à-dire tout démarrage qui a un TTFD de plus de 2,5 secondes OU toute partie du démarrage qui échoue (par exemple, une image ne se charge pas ou l’application plante).

TTID et TTFD peuvent être facilement instrumentés à l’aide d’appels système Android : TTID est capturé par la valeur affichée de logcat, tandis que TTFD peut être enregistré sur logcat à l’aide [reportFullyDrawn](https://developer.android.com/reference/android/app/Activity#reportFullyDrawn()).

L’appel à reportFullyDrawn est une pratique particulièrement importante car elle fournit des informations utiles à Android pour optimiser l’utilisation des ressources afin de hiérarchiser tout travail avant cet appel, expliquent les ingénieurs de Google.

L’appel de cette méthode lorsque votre application est dans un état pleinement utilisable améliorera le temps de démarrage de votre application. Chaque application devrait utiliser cette API ! Et n’oubliez pas de le mesurer.

TTID et TTFD fournissent une base solide pour comprendre ce qui peut et doit être optimisé. À cette fin, les ingénieurs de Facebook énumèrent un certain nombre de recommandations, telles qu’être particulièrement zélé pour les plantages au démarrage, paralléliser le travail en utilisant tous les cœurs disponibles, et reporter ou envoyer en arrière-plan tout travail qui n’est pas lié à l’expérience de démarrage de l’application.

L’utilisation d’un cache peut être un excellent moyen d’accélérer les choses et de remplir votre application avec un contenu significatif, mais le contenu mis en cache ne doit être utilisé que lorsqu’il a du sens, c’est-à-dire lorsqu’il n’est pas périmé.

Évaluez s’il est préférable d’optimiser l’affichage du contenu le plus rapidement possible avec un délai d’expiration pour afficher le contenu obsolète si le réseau est lent, ou simplement d’afficher ce qui est disponible immédiatement si le réseau est hors ligne.

Optimiser les temps de démarrage nécessite de bien comprendre ce qui se passe au lancement, quel est le chemin critique et où se trouvent les obstacles. Pour cela, Android fournit un certain nombre d’outils, dont Trace et Jetpack Macrobenchmark : Startup. Ceux-ci peuvent également aider à comprendre si une application essaie d’en faire trop au lancement en essayant d’initialiser trop de choses. Un autre outil utile est la bibliothèque de démarrage Jetpack App, qui permet d’initialiser les composants au démarrage de l’application dans un ordre spécifié.

L’optimisation du démarrage d’applications offre bien plus qu’il est possible de résumer ici, alors ne manquez pas l’article d’origine pour obtenir tous les détails.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *