Limites de localisation en arrière-plan
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Pour réduire la consommation d'énergie, Android 8.0 (niveau d'API 26) limite la fréquence à laquelle une application peut récupérer la position actuelle de l'utilisateur lorsqu'elle s'exécute en arrière-plan. Dans ces conditions, les applications ne peuvent recevoir des notifications de position que quelques fois par heure.
Remarque : Ces limites s'appliquent à toutes les applications utilisées sur des appareils équipés d'Android 8.0 (niveau d'API 26) ou version ultérieure, quelle que soit la version du SDK cible de l'application.
Ce comportement de récupération de position est particulièrement important à garder à l'esprit si votre application repose sur des alertes en temps réel ou sur la détection de mouvement lorsqu'elle s'exécute en arrière-plan.
Le comportement de l'application au premier plan est conservé
Si une application est au premier plan sur un appareil équipé d'Android 8.0 (niveau d'API 26), le comportement de mise à jour de la position est le même que sur Android 7.1.1 (niveau d'API 25) et versions antérieures.
Avertissement:Si votre application récupère des mises à jour de position quasi en temps réel sur une longue période, l'autonomie de la batterie de l'appareil est considérablement réduite.
Ajuster le comportement de localisation de votre application
Déterminez si les cas d'utilisation d'exécution en arrière-plan de votre application ne peuvent pas fonctionner du tout si votre application reçoit des mises à jour de position peu fréquentes. Si tel est le cas, vous pouvez récupérer les mises à jour de position plus fréquemment en effectuant l'une des actions suivantes:
- Mettez votre application au premier plan.
-
Démarrez un service de premier plan dans votre application en appelant startForegroundService()
. Lorsqu'un tel service de premier plan est actif, il s'affiche sous la forme d'une notification continue dans la zone de notification.
Attention:Si votre application démarre un service de premier plan lorsqu'elle s'exécute en arrière-plan sur un appareil équipé d'Android 11 (niveau d'API 30) ou version ultérieure, elle ne peut pas accéder aux informations de localisation, sauf si l'utilisateur lui a accordé l'autorisation ACCESS_BACKGROUND_LOCATION
. Pour en savoir plus, consultez les conseils sur les restrictions d'utilisation associées aux services de premier plan.
-
Utilisez des éléments de l'API Geofencing, tels que
GeofencingClient
, qui sont optimisés pour réduire la consommation d'énergie.
-
Utilisez un écouteur de position passif, qui peut recevoir des mises à jour de position plus rapides si des applications de premier plan demandent des mises à jour de position à un rythme plus rapide.
Remarque:Si votre application a besoin d'accéder à l'historique des positions contenant des mises à jour fréquentes, utilisez la version groupée des éléments de l'API Fused Location Provider, tels que l'interface FusedLocationProviderApi
. Lorsque votre application s'exécute en arrière-plan, cette API reçoit la position de l'utilisateur plus fréquemment que l'API non groupée. N'oubliez pas, cependant, que votre application ne reçoit toujours les mises à jour par lot que quelques fois par heure.
API concernées
Les modifications apportées au comportement de récupération de la position dans les applications en arrière-plan affectent les API suivantes:
- Fused Location Provider (FLP)
-
-
Si votre application s'exécute en arrière-plan, le service du système de localisation ne calcule une nouvelle position pour votre application que quelques fois par heure. Cela est vrai même lorsque votre application demande des mises à jour de position plus fréquentes.
Toutefois, en utilisant la
version par lot de FLP, vous avez accès à un historique de position plus fréquent après que votre application a reçu une mise à jour par lot, qui ne se produit que quelques fois par heure.
- Si votre application s'exécute au premier plan, les taux d'échantillonnage de la position ne changent pas par rapport à Android 7.1.1 (niveau d'API 25).
- Géorepérage
-
- Les applications en arrière-plan peuvent recevoir des événements de transition de géorepérage plus fréquemment que les mises à jour du fournisseur de position fusionné.
- La réactivité moyenne d'un événement de géorepérage est d'environ deux minutes.
- Mesures GNSS et messages de navigation GNSS
-
- Gestionnaire de zones géographiques
-
-
Les mises à jour de position ne sont fournies aux applications en arrière-plan que quelques fois par heure.
Remarque:Si votre application s'exécute sur un appareil sur lequel les services Google Play sont installés, nous vous recommandons vivement d'utiliser le fournisseur de position fusionné (FLP) à la place.
- Gestionnaire Wi-Fi
-
La méthode
startScan()
n'effectue une analyse complète des applications en arrière-plan que quelques fois par heure. Si une application en arrière-plan appelle à nouveau la méthode peu de temps après, la classe WifiManager
fournit les résultats mis en cache de l'analyse précédente.
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,["# Background Location Limits\n\nIn an effort to reduce power consumption, Android 8.0 (API level 26) limits\nhow frequently an app can retrieve the user's current location while the app is\n[running in the background](/guide/background). Under these\nconditions, apps can receive location updates only a few times each hour.\n\n**Note:** These limitations apply to all apps used on devices\nrunning Android 8.0 (API level 26) or higher, **regardless of an app's\ntarget SDK version**.\n\nThis location retrieval behavior is particularly\nimportant to keep in mind if your app relies on real-time alerts or motion\ndetection while running in the background.\n\nForeground app behavior is preserved\n------------------------------------\n\n\nIf an app is in the foreground on a device running Android 8.0 (API level 26),\nthe location update behavior is the same as on Android 7.1.1 (API level\n25) and lower.\n\n**Warning:** If your app retrieves near real-time location\nupdates over a long period of time, the device's battery life becomes\nsignificantly shorter.\n\nTuning your app's location behavior\n-----------------------------------\n\nConsider whether your app's use cases for running in the background cannot\nsucceed at all if your app receives infrequent location updates. If this is the\ncase, you can retrieve location updates more frequently by performing one of the\nfollowing actions:\n\n- Bring your app to the foreground.\n- Start a [foreground\n service](/guide/components/foreground-services) in your app by calling\n [startForegroundService()](/reference/android/content/Context#startForegroundService(android.content.Intent)). When such a foreground service is active, it\n appears as an ongoing notification in the\n [notification\n area](/guide/topics/ui/notifiers/notifications).\n\n **Caution:** If your app starts a foreground service\n while running in the background on a device that runs Android 11 (API\n level 30) or higher, your app cannot access location information unless the\n user has granted the\n [`ACCESS_BACKGROUND_LOCATION`](/reference/android/Manifest.permission#ACCESS_BACKGROUND_LOCATION)\n permission to your app. For more information, view the guidance about the\n [while-in-use\n restrictions](/guide/components/foreground-services#while-in-use-restrictions) that are associated with foreground services.\n- Use elements of the Geofencing API, such as the [`GeofencingClient`](https://developers.google.com/android/reference/com/google/android/gms/location/GeofencingClient), which are optimized for minimizing power use.\n- Use a passive location listener, which may receive faster location updates if there are foreground apps requesting location updates at a faster rate.\n\n**Note:** If your app needs access to location history that\ncontains time-frequent updates, use the batched version of the Fused Location\nProvider API elements, such as the\n[`FusedLocationProviderApi`](https://developers.google.com/android/reference/com/google/android/gms/location/FusedLocationProviderApi)\ninterface. When your app is running in the background, this API receives the\nuser's location more frequently than the non-batched API. Keep in mind, however,\nthat your app still receives updates in batches only a few times each hour.\n\nAffected APIs\n-------------\n\n\nThe changes to location retrieval behavior in background apps affect the\nfollowing APIs:\n\n[Fused\nLocation Provider (FLP)](https://developers.google.com/android/reference/com/google/android/gms/location/FusedLocationProviderApi)\n:\n - If your app is running in the background, the location system service\n computes a new location for your app only a few times each hour. This\n is the case even when your app is requesting more frequent location\n updates.\n\n By using the\n [batched version](https://developers.google.com/android/reference/com/google/android/gms/location/LocationRequest#setMaxWaitTime(long)) of FLP, however, you have access to more\n time-frequent location history after your app receives a batch update,\n which also occurs only a few times each hour.\n - If your app is running in the foreground, there is no change in location sampling rates compared to Android 7.1.1 (API level 25).\n\nGeofencing\n:\n - Background apps can receive geofencing transition events more frequently than updates from the Fused Location Provider.\n - The average responsiveness for a geofencing event is every couple of minutes or so.\n\nGNSS Measurements and GNSS Navigation Messages\n:\n - When your app is in the background, callbacks that are registered to receive outputs from [GnssMeasurement](/reference/android/location/GnssMeasurement) and [GnssNavigationMessage](/reference/android/location/GnssNavigationMessage) stop executing.\n\nLocation Manager\n:\n - Location updates are provided to background apps only a few times\n each hour.\n\n\n **Note:** If your app is running on a device with\n Google Play services installed, it is highly recommended that you use\n the [Fused\n Location Provider (FLP)](https://developers.google.com/android/reference/com/google/android/gms/location/FusedLocationProviderApi) instead.\n\nWi-Fi Manager\n:\n The [startScan()](/reference/android/net/wifi/WifiManager#startScan()) method\n performs a full scan for background apps only a few times each hour. If a\n background app calls the method again soon afterward, the\n [WifiManager](/reference/android/net/wifi/WifiManager) class provides cached results from the\n previous scan."]]