Le système hiérarchise les demandes d'accès aux ressources des applications en fonction de l'état de l'appareil, de l'état de l'application et du bucket de mise en veille de l'application.
Le système Android peut appliquer des limites de ressources de deux manières différentes. Une façon d'optimiser l'utilisation des ressources consiste à différer l'exécution de la tâche jusqu'à ce que l'appareil ait quitté un état à faible consommation d'énergie, tel que le mode veille. Par exemple, les tâches régulières et les alarmes inexactes sont différées afin qu'elles s'exécutent une fois que l'appareil quitte le mode veille.
Vous pouvez également réduire la fréquence à laquelle l'application peut réveiller l'appareil et effectuer des tâches en fonction du bucket de veille actuel de l'application. Le système peut réduire à la fois la fréquence (la fréquence à laquelle l'application réveille l'appareil) et la durée totale (la durée pendant laquelle l'appareil reste allumé). Par exemple, si l'application se trouve dans le bucket de veille rare, elle peut exécuter des tâches planifiées pendant une période totale de 10 minutes sur une période glissante de 24 heures.
Notez que WorkManager utilise JobScheduler pour planifier des tâches lorsque l'application n'est pas visible et que les nœuds de calcul sont donc affectés par les limites de ressources de tâche.
Pour en savoir plus sur les restrictions, consultez les articles suivants:
- Limites de ressources en fonction de l'état de l'appareil
- Limites de ressources en fonction de l'état de l'application
- Limites de ressources basées sur le bucket de mise en veille des applications
Notez que l'état de l'appareil et de l'application peuvent remplacer les limites des buckets de veille de l'application. Par exemple, si l'appareil est en charge, le système autorise les applications du bucket de mise en veille rare à exécuter des tâches pendant plus de 10 minutes sur une période de 24 heures.
Des modifications de comportement ont également affecté les limites de ressources. Pour en savoir plus, consultez la section Modifications du comportement d'Android qui ont un impact sur les limites de ressources.
Limites de ressources en fonction de l'état de l'appareil
Le système peut également exempter ou appliquer des limites de ressources en fonction de l'état de l'appareil. Par exemple, un appareil en état de recharge dispose d'un accès illimité aux ressources, quel que soit son bucket de veille de l'application.
État de l'appareil |
Emplois |
Alarmes |
Accès au réseau |
Firebase Cloud Messaging |
Recharge |
Aucune limite d'exécution, sauf pour le bucket de veille restreint |
Aucune limite d'exécution pour tous les buckets de veille et les états de processus, sauf si l'utilisateur limite manuellement la batterie de l'application |
Aucune restriction |
Aucune restriction |
Écran activé |
Les limites d'exécution sont appliquées en fonction du bucket de secours. |
Les limites d'exécution sont appliquées en fonction du processus de l'application et du bucket de mise en veille. |
L'accès dépend du bucket de secours ou de l'état du processus de l'application |
Aucune restriction |
Écran éteint et mode Veille activés |
Les limites d'exécution sont appliquées en fonction du bucket de secours, et l'exécution est différée jusqu'à la période de maintenance de la mise en veille. |
Les limites d'exécution sont appliquées en fonction du bucket de secours. Alarmes standards: reportées à la fenêtre de maintenance de la mise en veille Alarmes en cas d'inactivité: limité à 7 par heure |
Limité en mode Veille |
Priorité élevée: aucune limite d'exécution Priorité normale: reporté à l'intervalle de maintenance de mise en veille |
Limites de ressources en fonction de l'état de l'application
Le fait que le système applique ou non les limites de ressources du bucket de veille de l'application dépend de l'importance du processus de l'application. Consultez ActivityManager.RunningAppProcessInfo.importance
pour comprendre les différents niveaux d'importance des processus.
L'utilisateur de l'appareil peut également choisir d'ignorer manuellement les optimisations de gestion de l'alimentation de l'application, ce qui remplace les limites des buckets App Standby.
État de l'application |
Emplois |
Alarmes |
Réseau |
Le processus de l'application est visible ou en premier plan |
Aucune limite d'exécution |
Aucune limite de fréquence |
Aucune restriction |
Le processus de l'application exécute un service de premier plan |
Les limites d'exécution sont appliquées en fonction du bucket de secours*** |
Les limites de fréquence sont appliquées en fonction du bucket de veille. |
Aucune restriction |
L'utilisateur limite manuellement l'utilisation de la batterie de l'application |
Exécution limitée |
Exécution limitée |
L'accès dépend du comportement du bucket de veille |
L'utilisateur libère manuellement la batterie de l'application |
La limite d'exécution est généreuse*** |
Aucune limite d'exécution |
Il n'y a pas de restriction, sauf si l'appareil est en mode Économiseur de données. |
*** Le comportement du quota d'exécution des jobs a changé dans Android 16. Avant Android 16, il n'y avait pas de limite d'exécution lorsque l'application exécutait un service de premier plan ou que l'utilisateur n'avait pas limité la batterie de l'application.
Limites de ressources basées sur le bucket de mise en veille des applications
Remarque: Les valeurs de ce tableau ne garantissent pas les durées d'exécution, car d'autres conditions de l'appareil ou des modifications de bucket peuvent affecter les contraintes de ressources. Les valeurs peuvent également être modifiées dans les prochaines versions d'Android.
Les tâches standards, les tâches accélérées, les alarmes et l'accès au réseau peuvent être limités en fonction du bucket de mise en veille de l'application. Découvrez comment les buckets de veille de l'application affectent votre application en utilisant ces limites approximatives de gestion de l'alimentation comme guide. Pour des performances optimales, respectez les bonnes pratiques de mise en veille des applications et optimisez l'utilisation de la batterie pour les API de planification des tâches.
Notez qu'à partir d'Android 13, le bucket de veille de l'application ne détermine plus le nombre de FCM de priorité élevée qu'une application peut utiliser.
Bucket de mise en veille des applications |
Emplois réguliers* |
Offres d'emploi accélérées** |
Alarmes |
Réseau |
Active (Actif) : |
Jusqu'à 20 minutes sur une période de 60 minutes glissante*** |
Jusqu'à 30 minutes sur une période de 24 heures*** |
Aucune limite d'exécution |
Aucune restriction |
Working set (Ensemble de travail) : |
Jusqu'à 10 minutes sur une période de quatre heures |
15 minutes maximum sur une période de 24 heures |
Limité à 10 par heure |
Aucune restriction |
Frequent (Fréquent) : |
Jusqu'à 10 minutes sur une période de 12 heures |
Jusqu'à 10 minutes sur une période de 24 heures |
Limité à 2 par heure |
Aucune restriction |
Rare : |
Jusqu'à 10 minutes sur une période de 24 heures |
Jusqu'à 10 minutes sur une période de 24 heures |
Limité à 1 par heure |
Désactivé |
Restricted (Limité) : |
Une fois par jour, pendant 10 minutes maximum |
Jusqu'à cinq minutes dans un délai de 24 heures |
Une alarme par jour, qu'il s'agisse d'une alarme exacte ou d'une alarme inexacte |
Désactivé |
* Les tâches régulières décrivent les tâches qui n'utilisent pas les indicateurs setUserInitiated(true)
ou setExpedited(true)
dans JobScheduler ni les nœuds de calcul prioritaires dans WorkManager.
** Les tâches accélérées ont une limite d'exécution distincte des tâches normales. Elles peuvent être configurées dans WorkManager pour continuer à s'exécuter à l'aide des limites d'exécution des tâches normales une fois que les limites accélérées sont épuisées.
*** Le comportement du quota d'exécution des jobs a changé dans Android 16. Avant Android 16, il n'y avait pas de limite d'exécution lorsque l'application se trouvait dans le bucket "standby actif".
Modifications de comportement d'Android ayant une incidence sur les limites de ressources
Les mises à jour Android suivantes ont modifié les limites de ressources des applications.
Android 16
Modification du comportement des optimisations de quota JobScheduler
Android a ajusté le quota d'exécution d'une tâche régulière et accélérée en fonction des facteurs suivants:
- Bucket de mise en veille de l'application dans lequel se trouve l'application
- Si la tâche commence à s'exécuter alors que l'application est dans un état supérieur
- Si la tâche s'exécute pendant l'exécution d'un service de premier plan
Android 13
Modification du comportement des quotas Firebase Cloud Messaging (FCM) de priorité élevée
- Les buckets de mise en veille des applications ne déterminent plus le nombre de FCM à priorité élevée qu'une application peut utiliser.
- Le système rétrograde désormais les messages à priorité élevée s'il détecte une application qui envoie constamment des messages à priorité élevée qui ne génèrent pas de notification.
- Pour obtenir des consignes actuelles sur les messages à priorité élevée, consultez la documentation Firebase sur la définition et la gestion de la priorité des messages.
Android 9
Lancement de la fonctionnalité Buckets App Standby
Android 9 introduit une nouvelle fonctionnalité de gestion de la batterie, les buckets de mise en veille des applications. Les buckets de mise en veille des applications permettent au système de hiérarchiser les demandes d'accès aux ressources en fonction de la fréquence d'utilisation des applications et de leurs dernières utilisations. En fonction des utilisations, chaque application est placée dans l'un des cinq buckets prioritaires. Le système limite les ressources de l'appareil disponibles pour chaque application en fonction du bucket dans lequel elles se trouvent.