Bonnes pratiques pour l'optimisation des applications

Les bonnes pratiques suivantes vous aident à optimiser votre application sans compromettre la qualité.

Utiliser des profils de référence

Les profils de référence peuvent améliorer la vitesse d'exécution du code de 30 % à partir du premier lancement. Ils peuvent rendre toutes les interactions utilisateur, comme le démarrage de l'application, la navigation entre les écrans ou le défilement, plus fluides dès leur première diffusion. Augmenter la vitesse et la réactivité d'une application entraîne une augmentation du nombre d'utilisateurs actifs par jour et un taux de visiteurs de retour moyen plus élevé.

Utiliser un profil de démarrage

Un profil de démarrage est semblable à un profil de référence, mais il est exécuté au moment de la compilation pour optimiser la mise en page DEX et accélérer le démarrage de l'application.

Utiliser la bibliothèque App Startup

La bibliothèque App Startup vous permet de définir des initialiseurs de composants qui partagent un seul fournisseur de contenu, plutôt que de définir des fournisseurs de contenu distincts pour chaque composant à initialiser. Cela peut considérablement améliorer le temps de démarrage de l'application.

Charger des bibliothèques de manière différée ou désactiver l'initialisation automatique

Les applications consomment de nombreuses bibliothèques, dont certaines peuvent être obligatoires pour le démarrage. Toutefois, dans de nombreuses bibliothèques, l'initialisation peut être différée jusqu'à ce que le premier frame soit dessiné. Certaines bibliothèques proposent une option pour désactiver l'initialisation automatique au démarrage ou utiliser l'initialisation à la demande. Utilisez cette option pour différer l'initialisation jusqu'à ce que cela soit nécessaire, afin d'améliorer les performances. Vous pouvez, par exemple, utiliser l'initialisation à la demande pour n'appeler WorkManager que lorsque le composant est requis.

Utiliser des ViewStubs

Un ViewStub est une View invisible de taille nulle que vous pouvez utiliser pour gonfler, de manière différée, des ressources de mise en page lors de l'exécution. Cela vous permet de différer le gonflement des vues qui ne sont pas nécessaires au démarrage.

Si vous utilisez Jetpack Compose, vous pouvez obtenir un comportement semblable à ViewStub en utilisant l'état pour différer le chargement de certains composants :

var shouldLoad by remember {mutableStateOf(false)}

if (shouldLoad) {
   MyComposable()
}

Chargez les composants dans le bloc conditionnel en modifiant shouldLoad :

LaunchedEffect(Unit) {
   shouldLoad = true
}

Cela déclenche une recomposition qui inclut le code dans le bloc conditionnel du premier extrait.

Optimiser l'écran de démarrage

Les écrans de démarrage jouent un rôle essentiel dans le démarrage d'une application. L'utilisation d'un écran de démarrage bien conçu peut contribuer à améliorer l'expérience de démarrage globale de l'application. Android 12 (niveau d'API 31) et les versions ultérieures incluent un écran de démarrage conçu pour améliorer les performances. Pour en savoir plus, consultez Écran de démarrage.

Utiliser des types d'images évolutifs

Nous vous recommandons d'utiliser des drawables vectoriels pour les images. Si cela n'est pas possible, utilisez des images WebP. WebP est un format d'image qui fournit une compression supérieure avec et sans pertes pour les images destinées au Web. Vous pouvez convertir des images BMP, JPG, PNG ou GIF statiques au format WebP à l'aide d'Android Studio. Pour en savoir plus, consultez la section Créer des images WebP.

Réduisez également le nombre et la taille des images chargées au démarrage.

Utiliser les API Performance

L'API Performance pour la lecture de contenus multimédias est disponible sur Android 12 (niveau d'API 31) ou version ultérieure. Vous pouvez utiliser cette API pour comprendre les fonctionnalités de l'appareil et effectuer des opérations en conséquence.

Utiliser en priorité les traces de démarrage à froid

Le démarrage à froid désigne le démarrage d'une application à partir de zéro. Autrement dit, le processus du système ne crée pas encore le processus de l'application. Votre application démarre généralement à froid si vous la lancez pour la première fois depuis le démarrage de l'appareil ou depuis son arrêt forcé. Les démarrages à froid sont beaucoup plus lents, car l'application et le système doivent effectuer davantage de tâches qui ne sont pas nécessaires avec d'autres types de démarrage, tels que les démarrages tiède et à chaud. Le traçage système des démarrages à froid vous permet de mieux surveiller les performances de l'application.