Einschränkungen bei der Standortermittlung im Hintergrund

Unter Android 8.0 (API-Ebene 26) wird der Energieverbrauch reduziert, indem die Häufigkeit begrenzt wird, mit der eine App den aktuellen Standort des Nutzers abrufen kann, während die App im Hintergrund ausgeführt wird. Unter diesen Bedingungen können Apps nur wenige Male pro Stunde Standortaktualisierungen erhalten.

Hinweis : Diese Einschränkungen gelten für alle Apps, die auf Geräten mit Android 8.0 (API-Level 26) oder höher verwendet werden, unabhängig von der SDK-Version der App.

Dieses Verhalten beim Abrufen des Standorts ist besonders wichtig, wenn Ihre App auf Echtzeitbenachrichtigungen oder Bewegungserkennung angewiesen ist, während sie im Hintergrund ausgeführt wird.

Verhalten von Apps im Vordergrund bleibt erhalten

Wenn sich eine App auf einem Gerät mit Android 8.0 (API-Ebene 26) im Vordergrund befindet, entspricht das Verhalten bei Standortaktualisierungen dem bei Android 7.1.1 (API-Ebene 25) und niedriger.

Warnung:Wenn Ihre App über einen längeren Zeitraum hinweg Standortaktualisierungen in nahezu Echtzeit abrufen lässt, verkürzt sich die Akkulaufzeit des Geräts erheblich.

Standortverhalten Ihrer App optimieren

Überlegen Sie, ob die Anwendungsfälle Ihrer App, die im Hintergrund ausgeführt werden, überhaupt nicht funktionieren, wenn Ihre App selten Standortaktualisierungen erhält. In diesem Fall können Sie Standortaktualisierungen häufiger abrufen. Gehen Sie dazu so vor:

  • Bringen Sie Ihre App in den Vordergrund.
  • Starten Sie einen Dienst im Vordergrund in Ihrer App, indem Sie startForegroundService() aufrufen. Wenn ein solcher Dienst im Vordergrund aktiv ist, wird er im Benachrichtigungsbereich als fortlaufende Benachrichtigung angezeigt.

    Achtung:Wenn Ihre App einen Dienst im Vordergrund startet, während sie auf einem Gerät mit Android 11 (API-Level 30) oder höher im Hintergrund ausgeführt wird, kann sie nur dann auf Standortinformationen zugreifen, wenn der Nutzer der App die Berechtigung ACCESS_BACKGROUND_LOCATION erteilt hat. Weitere Informationen finden Sie in der Anleitung zu den Einschränkungen für die Verwendung, die mit Diensten im Vordergrund verbunden sind.

  • Verwenden Sie Elemente der Geofencing API, z. B. GeofencingClient, die für eine minimale Stromnutzung optimiert sind.
  • Verwenden Sie einen passiven Standort-Listener, der möglicherweise schnellere Standortaktualisierungen erhält, wenn Apps im Vordergrund häufiger Standortaktualisierungen anfordern.

Hinweis:Wenn Ihre App Zugriff auf den Standortverlauf benötigt, der häufig aktualisiert wird, verwenden Sie die Batchversion der Fused Location Provider API-Elemente, z. B. die FusedLocationProviderApi-Benutzeroberfläche. Wenn Ihre App im Hintergrund ausgeführt wird, erhält diese API den Standort des Nutzers häufiger als die nicht gruppierte API. Ihre App erhält jedoch weiterhin nur wenige Male pro Stunde Updates in Batches.

Betroffene APIs

Die Änderungen am Verhalten der Standortabfrage in Apps im Hintergrund wirken sich auf die folgenden APIs aus:

Anbieter für kombinierte Standortbestimmung (Fused Location Provider, FLP)
  • Wenn Ihre App im Hintergrund ausgeführt wird, berechnet der Standortsystemdienst nur wenige Male pro Stunde einen neuen Standort für Ihre App. Das gilt auch, wenn Ihre App häufigere Standortaktualisierungen anfordert.

    Wenn Sie jedoch die Batchversion von FLP verwenden, haben Sie Zugriff auf einen häufigeren Standortverlauf, nachdem Ihre App ein Batch-Update erhalten hat. Das geschieht jedoch auch nur wenige Male pro Stunde.

  • Wenn Ihre App im Vordergrund ausgeführt wird, ändert sich die Häufigkeit der Standortermittlung im Vergleich zu Android 7.1.1 (API-Ebene 25) nicht.
Geofencing
  • Hintergrund-Apps können Geofencing-Übergangsereignisse häufiger als Updates vom Anbieter für den kombinierten Standort erhalten.
  • Die durchschnittliche Reaktionszeit für ein Geofencing-Ereignis liegt bei etwa zwei Minuten.
GNSS-Messungen und GNSS-Navigationsnachrichten
  • Wenn sich Ihre App im Hintergrund befindet, werden Callbacks, die für den Empfang von Ausgaben von GnssMeasurement und GnssNavigationMessage registriert sind, nicht mehr ausgeführt.
Standortmanager
  • Standortaktualisierungen werden für Apps im Hintergrund nur wenige Male pro Stunde bereitgestellt.

    Hinweis:Wenn Ihre App auf einem Gerät ausgeführt wird, auf dem Google Play-Dienste installiert sind, sollten Sie stattdessen den Fused Location Provider (FLP) verwenden.

WLAN-Manager
Bei der Methode startScan() wird nur wenige Male pro Stunde ein vollständiger Scan für Hintergrund-Apps durchgeführt. Wenn eine App im Hintergrund die Methode bald darauf noch einmal aufruft, stellt die WifiManager-Klasse die im Cache gespeicherten Ergebnisse aus dem vorherigen Scan bereit.