Android Dev Summit, October 23-24: two days of technical content, directly from the Android team. Sign-up for livestream updates.

Límites de ubicación en segundo plano

En un esfuerzo por reducir el consumo de energía, Android 8.0 limita la frecuencia con la cual las aplicaciones en segundo plano pueden recuperar la ubicación actual del usuario, sin importar la versión de SDK de destino de tu aplicación.

Este comportamiento de obtención de la ubicación es particularmente importante para tener en cuenta si tu aplicación depende de alertas o detección de movimiento en tiempo real mientras se ejecuta en segundo plano.

Importante: Como punto de partida, permitiremos que las aplicaciones en segundo plano únicamente reciban actualizaciones de ubicación solo unas veces por hora. Seguiremos ajustando el intervalo de actualización de la ubicación en toda la Preview según el impacto en el sistema y los comentarios de los desarrolladores.

El sistema distingue entre las aplicaciones en primer y segundo plano. Se considera que una aplicación se encuentra en primer plano si alguno de los siguientes puntos se cumple:

  • Tiene una actividad visible, independientemente de que la actividad se haya iniciado o esté en pausa.
  • Tiene un servicio en primer plano.
  • Otra aplicación en primer plano está conectada a la aplicación, ya sea por vinculación a uno de sus servicios o por el uso de uno de sus proveedores de contenido.

Si ninguna de estas condiciones se cumple, se considera que la aplicación se encuentra en segundo plano.

Se preserva el comportamiento de la aplicación en primer plano

Si una aplicación se encuentra en primer plano en un dispositivo con Android 8.0, el comportamiento de actualización de la ubicación es el mismo que el de Android 7.1.1 (nivel de API 25) o versiones anteriores.

Advertencia: Si tu aplicación obtiene actualizaciones de ubicación casi en tiempo real durante un período de tiempo prolongado, la duración de la batería del dispositivo disminuye considerablemente.

Ajustar el comportamiento de ubicación de tu aplicación

Considera la posibilidad de que los resultados no sean exitosos en los casos de uso de tu aplicación en segundo plano si esta recibe actualizaciones de ubicación poco frecuentes. Si esto sucede, puedes obtener las actualizaciones de ubicación con más frecuencia realizando alguna de las siguientes acciones:

  • Haz que tu aplicación pase a funcionar en primer plano.
  • Utiliza un servicio en primer planoen tu aplicación. Cuando este servicio esté activo, tu aplicación debe mostrar una notificación en curso en el área de notificaciones.
  • Utiliza elementos de la Geofencing API, como la interfaz GeofencingApi, que se optimizan para minimizar el consumo de energía.
  • Utiliza un receptor de ubicación pasivo, que puede recibir actualizaciones de ubicación más rápidas si hay aplicaciones en primer plano solicitando ubicaciones con una mayor frecuencia.

Nota: Si tu aplicación necesita acceso al historial de ubicación que contiene actualizaciones frecuentes, utiliza la versión por lotes de los elementos de API del proveedor de ubicación combinada, como la interfaz FusedLocationProviderApi. Cuando tu aplicación 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. No obstante, ten en cuenta que de todos modos tu aplicación recibe actualizaciones en lotes solo algunas veces por hora.

API afectadas

Los cambios en el comportamiento de obtención de ubicación en las aplicaciones en segundo plano tienen efecto en las siguientes API:

Fused Location Provider (FLP)
  • Si tu aplicación se ejecuta en segundo plano, el servicio del sistema de ubicación calcula la nueva ubicación para tu aplicación solo algunas veces por hora, según el intervalo definido en el cambio de comportamiento de Android 8.0. Esto ocurre incluso cuando tu aplicación solicita actualizaciones de ubicación más frecuentes.
  • Si tu aplicación se ejecuta en segundo plano, no se producen cambios en las tasas de muestreo de ubicación en comparación con Android 7.1.1 (nivel 25 de API).
Geofencing
  • Las apps en segundo plano pueden obtener eventos de transición de geovallado con mayor frecuencia que las actualizaciones del proveedor de ubicación combinada.
  • La receptividad promedio para un evento de geovallado tiene una frecuencia aproximada de dos minutos.
GNSS Measurements y GNSS Navigation Message
Location Manager
  • Se proporcionan actualizaciones de ubicación a las aplicaciones en segundo plano solo algunas veces por hora, según el intervalo definido en el cambio de comportamiento de Android 8.0.

    Nota: Si tu app se ejecuta en un dispositivo con Google Play Services instalado, es muy recomendable usar el proveedor de ubicación combinada (FLP) como alternativa.

Wi-Fi Manager
El método startScan() realiza una exploración completa 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 tiempo después, la clase WifiManager proporciona resultados de la exploración anterior almacenados en caché.