Um den Stromverbrauch zu reduzieren, begrenzt Android 8.0 (API-Level 26) die Häufigkeit, mit der eine App den aktuellen Standort des Nutzers abrufen kann, während sie im Hintergrund ausgeführt wird. Unter diesen Bedingungen können Apps nur ein paar Mal pro Stunde Standortaktualisierungen empfangen.
Hinweis : Diese Einschränkungen gelten für alle Apps auf Geräten mit Android 8.0 (API-Level 26) oder höher, unabhängig von der SDK-Zielversion einer App.
Dieses Verhalten der Standortabfrage ist besonders wichtig, wenn Ihre App auf Echtzeitwarnungen oder auf Bewegungserkennung angewiesen ist, während sie im Hintergrund ausgeführt wird.
Das Verhalten der App im Vordergrund wird beibehalten
Wenn eine App auf einem Gerät mit Android 8.0 (API-Level 26) im Vordergrund ausgeführt wird, entspricht das Verhalten von Standortupdates dem Verhalten unter Android 7.1.1 (API-Level 25) und niedriger.
Warnung:Wenn Ihre App über einen längeren Zeitraum nahezu in Echtzeit Standortupdates abruft, wird die Akkulaufzeit des Geräts deutlich verkürzt.
Standortverhalten Ihrer App optimieren
Überlegen Sie, ob die Anwendungsfälle Ihrer App für die Ausführung im Hintergrund überhaupt nicht erfolgreich sein können, wenn Ihre App unregelmäßige Standortaktualisierungen erhält. In diesem Fall können Sie Standortaktualisierungen häufiger abrufen, indem Sie eine der folgenden Aktionen ausführen:
- Bringen Sie Ihre App in den Vordergrund.
-
Starten Sie in Ihrer App einen Dienst im Vordergrund, indem Sie
startForegroundService()
aufrufen. Wenn ein solcher Dienst im Vordergrund aktiv ist, wird er im Benachrichtigungsbereich als laufende Benachrichtigung angezeigt.Achtung:Wenn deine App auf einem Gerät mit Android 11 (API-Level 30) oder höher einen Dienst im Vordergrund startet, während sie im Hintergrund ausgeführt wird, kann sie nur dann auf Standortinformationen zugreifen, wenn der Nutzer der App die Berechtigung
ACCESS_BACKGROUND_LOCATION
gewährt hat. Weitere Informationen findest du in der Anleitung zu Einschränkungen während der Verwendung. -
Verwenden Sie Elemente der Geofencing API wie
GeofencingClient
, die für die Minimierung des Stromverbrauchs optimiert sind. - Verwende einen passiven Standort-Listener. Er kann schnellere Standortaktualisierungen erhalten, wenn Apps im Vordergrund Standortaktualisierungen schneller anfordern.
Hinweis:Wenn Ihre App Zugriff auf den Standortverlauf benötigt, der zeitintensive Aktualisierungen enthält, verwenden Sie die Batchversion der Fused Location Provider API-Elemente wie die FusedLocationProviderApi
-Oberfläche. Wenn die Anwendung im Hintergrund ausgeführt wird, empfängt diese API den Standort des Nutzers häufiger als die API ohne Batch. Beachten Sie jedoch, dass Ihre Anwendung nur einige Male pro Stunde Updates in Batches erhält.
Betroffene APIs
Die Änderungen am Standortabrufverhalten in Hintergrund-Apps wirken sich auf die folgenden APIs aus:
- Fused Location Provider (FLP)
-
-
Wenn Ihre App im Hintergrund ausgeführt wird, berechnet der Standortsystemdienst nur einige Male pro Stunde einen neuen Standort für Ihre App. Das ist auch dann der Fall, wenn deine App häufigere Standortaktualisierungen anfordert.
Mit der Batch-Version von FLP haben Sie jedoch Zugriff auf einen häufigeren Standortverlauf, nachdem Ihre App ein Batch-Update erhalten hat, was ebenfalls nur einige Male pro Stunde erfolgt.
- Wenn deine App im Vordergrund ausgeführt wird, ändern sich die Stichprobenraten für Standorte im Vergleich zu Android 7.1.1 (API-Level 25) nicht.
-
- Geofencing
-
- Hintergrund-Apps können Geofencing-Übergangsereignisse häufiger empfangen als Updates vom Anbieter für kombinierte Standortbestimmung.
- Die durchschnittliche Reaktionszeit für ein Geofencing-Ereignis beträgt etwa alle paar Minuten.
- GNSS-Messungen und GNSS-Navigationsmeldungen
-
- Wenn die Anwendung im Hintergrund ausgeführt wird, werden Callbacks, die für den Empfang von Ausgaben von
GnssMeasurement
undGnssNavigationMessage
registriert sind, nicht mehr ausgeführt.
- Wenn die Anwendung im Hintergrund ausgeführt wird, werden Callbacks, die für den Empfang von Ausgaben von
- Standortmanager
-
-
Standortaktualisierungen werden nur einige Male pro Stunde für Hintergrund-Apps bereitgestellt.
Hinweis:Wenn deine App auf einem Gerät ausgeführt wird, auf dem Google Play-Dienste installiert sind, wird dringend empfohlen, stattdessen den Fused Location Provider (FLP) zu verwenden.
-
- WLAN-Manager
-
Bei der Methode
startScan()
wird nur einige Male pro Stunde ein vollständiger Scan für Hintergrund-Apps durchgeführt. Wenn eine Hintergrund-App die Methode kurz danach noch einmal aufruft, liefert die KlasseWifiManager
im Cache gespeicherte Ergebnisse aus dem vorherigen Scan.