Limites des ressources de gestion de l'alimentation

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:

  1. Limites de ressources en fonction de l'état de l'appareil
  2. Limites de ressources en fonction de l'état de l'application
  3. 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:

  1. Bucket de mise en veille de l'application dans lequel se trouve l'application
  2. Si la tâche commence à s'exécuter alors que l'application est dans un état supérieur
  3. 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

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.