Améliorer la latence de démarrage
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
La latence de démarrage est une métrique importante pour conserver les utilisateurs actifs par jour et garantir une expérience fluide dès la première interaction. Cela est particulièrement vrai dans les environnements à faible RAM où des compromis de performance peuvent être nécessaires.
Toutefois, avant de commencer à améliorer le démarrage d'une application, il est important d'en comprendre les aspects sous-jacents.
Bonnes pratiques
Expédier l'appli avec un profil de référence
Les profils de référence améliorent la vitesse d'exécution du code d'environ 30 % dès le premier lancement en évitant l'interprétation et les étapes de compilation juste à temps (JIT) pour les chemins de code inclus. En expédiant un profil de référence dans une appli, Android Runtime (ART) peut optimiser les chemins de code inclus via la compilation anticipée (ou compilation AOT), ce qui permet d'améliorer les performances pour chaque nouvel utilisateur et chaque mise à jour d'application.
Éviter les initialisations superflues
Évitez les tâches superflues qui pourraient gêner la séquence de démarrage de votre application.
Le scénario le plus probable pour que votre application démarre un processus est son lancement. Toutefois, WorkManager, JobScheduler, BroadcastReceiver, les services liés et la bibliothèque de démarrage AndroidX peuvent également lancer des processus d'application en arrière-plan. Si possible, évitez d'initialiser quoi que ce soit inutilement dans votre classe Application
. De nombreuses bibliothèques proposent une initialisation à la demande, ce qui vous permet de les appeler uniquement en cas de besoin.
Déplacer des tâches du thread UI vers le thread d'arrière-plan
Si certaines tâches prennent plus de temps et bloquent le thread principal, déplacez-les vers un thread en arrière-plan ou utilisez WorkManager pour garantir l'efficacité.
Identifiez les opérations qui occupent de longues périodes ou qui prennent plus de temps que prévu. L'optimisation de ces tâches peut considérablement améliorer la latence au démarrage.
Analyser et résoudre les conflits de lecture sévères sur le disque
StrictMode est un outil pour les développeurs qui permet de détecter l'utilisation accidentelle d'un disque ou d'un accès réseau sur le thread principal de l'application, où les opérations de l'interface utilisateur sont reçues et des animations sont effectuées. Une fois que l'outil a détecté des améliorations possibles, vous pouvez arrêter automatiquement l'application ou consigner le cas de non-respect pour une inspection ultérieure.
Éviter les IPC synchrones
Souvent, les longues pauses dans l'exécution de votre application sont causées par des appels de liaison, le mécanisme de communication inter-processus (IPC) sur Android. Dans les versions récentes d'Android, il s'agit de l'une des raisons les plus courantes pour lesquelles le thread UI s'arrête. La solution consiste généralement à éviter d'appeler des fonctions qui effectuent des appels de liaison. Si c'est inévitable, vous devez mettre en cache la valeur ou déplacer la tâche vers des threads en arrière-plan. Pour en savoir plus, consultez Retards de planification des threads.
Le contenu et les exemples de code de cette page sont soumis aux licences décrites dans la Licence de contenu. Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/07/27 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/07/27 (UTC)."],[],[],null,["# Improve startup latency\n\nStartup latency is an important metric to retain daily active users and ensure\na seamless user experience from the first interaction. This is especially true\nin low-RAM environments where performance tradeoffs might be considered.\nHowever, before beginning to improve app startup, it's important to understand\nthe underlying aspects that contribute to startup itself.\n\nBest practices\n--------------\n\n### Ship with a Baseline Profile\n\nBaseline Profiles improve code execution speed by around 30% from the first\nlaunch by avoiding interpretation and\n[just-in-time (JIT)](/about/versions/nougat/android-7.0#jit_aot) compilation\nsteps for included code paths. By shipping a Baseline Profile in an app,\n[Android Runtime (ART)](https://source.android.com/docs/core/runtime)\ncan optimize included code paths through Ahead of Time (AOT) compilation,\nproviding performance enhancements for every new user and on every app update.\n\n### Avoid eager initialization\n\nAvoid doing eager work that may not be necessary in your app's startup sequence.\nThe most likely scenario for your app starting a process is through the\nlaunching of the app. However,\n[WorkManager](/reference/androidx/work/WorkManager),\n[JobScheduler](/reference/android/app/job/JobScheduler),\n[BroadcastReceiver](/reference/android/content/BroadcastReceiver), bound\nservices, and the [AndroidX startup library](/topic/libraries/app-startup)\ncan also start app processes in the background. If possible, avoid unnecessarily\ninitializing anything eagerly in your `Application` class. A lot of libraries\noffer on-demand initialization, which lets you invoke them only when necessary.\n\n### Move tasks from UI thread to background thread\n\nIf there are tasks that are taking longer and blocking the main thread, move\nthem to a background thread or use WorkManager to ensure efficiency.\nIdentify operations that occupy large time frames or consume more time\nthan expected. Optimizing these tasks can help drastically improve startup\nlatency.\n\n### Analyze and fix severe disk read contention\n\n[StrictMode](/reference/android/os/StrictMode) is a developer tool that can\nhelp detect the use of accidental disk or network access on the app's main\nthread, where UI operations are received and animations take place. Once the\ntool detects a possible area of improvement, you can automatically terminate\nthe app or log the violation for further inspection at a later time.\n\n### Avoid synchronous IPCs\n\nOften long pauses in your app's execution are caused by binder calls,\nthe inter-process communication (IPC) mechanism on Android. On recent versions\nof Android, it's one of the most common reasons for the UI Thread to stop\nrunning. Generally, the fix is to avoid calling functions that make binder\ncalls; if it's unavoidable, you should cache the value, or move work to\nbackground threads. For more information, see\n[Thread scheduling delays](/topic/performance/vitals/render#thread_scheduling_delays)."]]