Límites de ubicación en segundo plano
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
Para reducir el consumo de energía, Android 8.0 (nivel de API 26) limita la frecuencia con la cual una app puede recuperar la ubicación actual del usuario mientras se ejecuta en segundo plano. En estas condiciones, las apps pueden recibir actualizaciones de ubicación solo unas pocas veces por hora.
Nota: Estas limitaciones se aplican a todas las apps que se usan en dispositivos con Android 8.0 (nivel de API 26) o versiones posteriores, independientemente de la versión del SDK de destino de la app.
Se debe prestar especial atención a este comportamiento de recuperación de la ubicación si tu app se basa en alertas en tiempo real o en la detección de movimiento cuando se ejecuta en segundo plano.
Se preserva el comportamiento de la aplicación en primer plano
Si una app se encuentra en primer plano en un dispositivo que ejecuta Android 8.0 (nivel de API 26), el comportamiento de actualización de la ubicación es el mismo que en Android 7.1.1 (nivel de API 25) y versiones anteriores.
Advertencia: Si tu app obtiene actualizaciones de ubicación casi en tiempo real en un período prolongado, la duración de batería del dispositivo se reducirá considerablemente.
Cómo ajustar el comportamiento de ubicación de tu app
Considera la posibilidad de que los casos de uso de tu app para ejecutarse en segundo plano no puedan tener éxito si esta recibe actualizaciones de ubicación poco frecuentes. Si este es el caso, puedes obtener actualizaciones de ubicación con mayor frecuencia mediante una de las siguientes acciones:
- Haz que tu aplicación pase a funcionar en primer plano.
-
Inicia un servicio en primer plano en tu app llamando a startForegroundService()
. Cuando este servicio en primer plano esté activo, aparecerá como una notificación constante en el área de notificaciones.
Precaución: Si tu app inicia un servicio en primer plano mientras se ejecuta en segundo plano en un dispositivo que ejecuta Android 11 (nivel de API 30) o versiones posteriores, no podrá acceder a la información de ubicación, a menos que el usuario le haya otorgado el permiso ACCESS_BACKGROUND_LOCATION
. Para obtener más información, consulta la guía sobre las restricciones durante el uso que se asocian con los servicios en primer plano.
-
Usa elementos de la API de Geofencing, como
GeofencingClient
, que están optimizados para minimizar el uso de energía.
-
Usa un objeto de escucha de ubicación pasivo, que podría recibir actualizaciones de ubicación más rápidas si hay apps en primer plano que las solicitan con mayor frecuencia.
Nota: Si tu app necesita acceder al historial de ubicaciones que contiene las actualizaciones frecuentes, usa la versión por lotes de los elementos de la API del proveedor de ubicación combinada, como la interfaz FusedLocationProviderApi
. Cuando tu app se ejecuta en segundo plano, esta API recibe la ubicación del usuario con mayor frecuencia que la API que no se procesa por lotes. Sin embargo, ten en cuenta que tu app igualmente recibirá actualizaciones por lotes, solo que pocas veces por hora.
API afectadas
Los cambios en el comportamiento de recuperación de la ubicación en apps en segundo plano afectan a las siguientes APIs:
- Proveedor de ubicación combinada (FLP)
-
-
Si tu app se ejecuta en segundo plano, el servicio del sistema de ubicación calcula una nueva ubicación para tu app solo unas pocas veces por hora. lo que sucede incluso cuando tu app solicita actualizaciones de ubicación con mayor frecuencia.
Sin embargo, si usas la
versión por lotes de FLP, puedes acceder a un historial de ubicaciones más frecuentes luego de que tu app recibe una actualización por lote, lo que también ocurre solo unas pocas veces por hora.
- Si tu app se ejecuta en primer plano, no producirá ningún cambio en las tasas de muestreo de la ubicación en comparación con Android 7.1.1 (nivel de API 25).
- Geovallado
-
- Las apps en segundo plano pueden recibir eventos de transición de geovallado con mayor frecuencia que las actualizaciones del Proveedor de ubicación combinada.
- La capacidad de respuesta promedio para un evento de geovallado es cada un par de minutos aproximadamente.
- GNSS Measurements y GNSS Navigation Message
-
- Location Manager
-
-
Las apps en segundo plano reciben actualizaciones de ubicación solo unas pocas veces por hora.
Nota: Si tu app se ejecuta en un dispositivo que tiene los Servicios de Google Play instalados, te recomendamos encarecidamente que uses el Proveedor de ubicación combinada (FLP) en su lugar.
- Administrador de Wi-Fi
-
El método
startScan()
realiza un análisis completo de las apps en segundo plano solo unas pocas veces por hora. Si una app en segundo plano vuelve a llamar al método poco después, la clase WifiManager
mostrará los resultados almacenados en caché del análisis anterior.
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-07-27 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 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."]]