Die Standortermittlung im Hintergrund kann sich erheblich auf die Akkulaufzeit auswirken. Android unterstützt Einschränkungen bei der Standortermittlung im Hintergrund. Entwickler werden dazu angehalten, ihre Apps für eine bessere Akkueffizienz zu optimieren. Diese Optimierungen sind für alle Geräte von Vorteil, unabhängig von der verwendeten Android-Version.
Mit Einschränkungen bei der Standortermittlung im Hintergrund:
- Die Standortermittlung im Hintergrund wird gedrosselt und der Standort wird nur wenige Male pro Stunde berechnet und gesendet.
- WLAN-Scans sind konservativer und Standortaktualisierungen werden nicht berechnet, wenn das Gerät mit demselben statischen Zugangspunkt verbunden bleibt.
- Die Reaktionszeit für Geofencing ändert sich von einigen Sekunden auf etwa zwei Minuten. Durch diese Änderung wird die Akkuleistung verbessert – auf einigen Geräten sogar um das Zehnfache.
Erforderliche Kenntnisse
In diesem Dokument wird davon ausgegangen, dass Sie mit den folgenden APIs vertraut sind:
- Google-Standortdienste Diese APIs bieten eine höhere Genauigkeit und belasten den Akku weniger als die Standort-APIs des Frameworks.
- Anbieter für kombinierte Standortbestimmung Diese API kombiniert Signale von GPS, WLAN und Mobilfunknetzen sowie Beschleunigungsmesser, Gyroskop, Magnetometer und andere Sensoren.
- Geofencing: Diese API basiert auf der Fused Location Provider API und ist für eine optimale Akkuleistung optimiert.
Schnelle Akkuentladung
Die Standortermittlung und der Akkuverbrauch hängen folgendermaßen zusammen:
- Genauigkeit:Die Genauigkeit der Standortdaten. Im Allgemeinen gilt: Je höher die Genauigkeit, desto schneller entlädt sich der Akku.
- Häufigkeit:Gibt an, wie oft der Standort berechnet wird. Je häufiger der Standort berechnet wird, desto mehr Akku wird verbraucht.
- Latenz: Gibt an, wie schnell Standortdaten übermittelt werden. Je geringer die Latenz, desto mehr Akku wird benötigt.
Richtigkeit
Sie können die Standortgenauigkeit mit der Methode setPriority()
angeben, indem Sie einen der folgenden Werte als Argument übergeben:
PRIORITY_HIGH_ACCURACY
liefert den bestmöglichen Standort, der mit so vielen Eingaben wie nötig berechnet wird. Dabei werden GPS, WLAN und Mobilfunk sowie eine Vielzahl von Sensoren aktiviert. Dies kann zu einem erheblichen Akkuverbrauch führen.PRIORITY_BALANCED_POWER_ACCURACY
bietet eine genaue Standortermittlung und optimiert gleichzeitig den Energieverbrauch. GPS wird nur sehr selten verwendet. In der Regel wird eine Kombination aus WLAN- und Mobilfunkinformationen verwendet, um den Gerätestandort zu berechnen.PRIORITY_LOW_POWER
nutzt hauptsächlich Mobilfunkmasten und verzichtet auf GPS- und WLAN-Eingabe, um eine grobe Genauigkeit (auf Stadtebene) bei minimalem Akkuverbrauch zu erzielen.PRIORITY_NO_POWER
empfängt Standorte passiv von anderen Apps, deren Standort bereits berechnet wurde.
Verwenden Sie die Optionen „Ausgewogene Leistung“ oder „Niedriger Energieverbrauch“, um die Standortanforderungen der meisten Apps zu erfüllen. Verwenden Sie die hohe Genauigkeit für Apps, die im Vordergrund ausgeführt werden und Echtzeitaktualisierungen des Standorts erfordern (z. B. eine Karten-App).
Häufigkeit
Sie haben zwei Möglichkeiten, die Häufigkeit von Anzeigen an einem Standort festzulegen:
- Verwenden Sie die Methode
setinterval()
, um das Intervall für die Berechnung des Standorts Ihrer App anzugeben. - Verwenden Sie die Methode
setFastestInterval()
, um das Intervall für den Empfang der Standorte anderer Apps anzugeben.
Wenn Sie setInterval()
verwenden, geben Sie den größtmöglichen Wert an. Das gilt insbesondere für die Standortermittlung im Hintergrund, die den Akku oft stark beansprucht. Reservieren Sie Intervalle von wenigen Sekunden für Anwendungsfälle im Vordergrund.
Die in Android 8.0 (API-Ebene 26) eingeführten Einschränkungen für die Standortermittlung im Hintergrund erzwingen diese Strategien. Sie sollten jedoch versuchen, sie auch auf Geräten mit Android 7.0 (API-Ebene 24) und niedriger zu erzwingen.
Latenz
Sie können die Latenz mit der Methode setMaxWaitTime()
angeben. Dabei wird in der Regel ein Wert übergeben, der mehrmals größer ist als das in der Methode setInterval()
angegebene Intervall. Bei dieser Einstellung wird die Standortübermittlung verzögert und mehrere Standortaktualisierungen können in einem Batch gesendet werden. Diese beiden Änderungen tragen dazu bei, den Akkuverbrauch zu minimieren.
Wenn Ihre App nicht sofort eine Standortaktualisierung benötigt, sollten Sie der setMaxWaitTime()
-Methode den größtmöglichen Wert übergeben. So tauschen Sie die Latenz effektiv gegen mehr Daten und Akkueffizienz ein.
Wenn Sie Geofences verwenden, sollten Apps einen großen Wert an die Methode setNotificationResponsiveness()
übergeben, um den Akku zu schonen. Wir empfehlen einen Wert von mindestens fünf Minuten.
Weitere Informationen
Weitere Informationen finden Sie in folgenden Dokumenten:
- Empfehlungen: In diesem Leitfaden werden einige konkrete Maßnahmen beschrieben, mit denen Sie die Auswirkungen Ihrer App auf die Akkulaufzeit verbessern können.
- Anwendungsfälle: In diesem Leitfaden werden mehrere gängige Anwendungsfälle beschrieben, in denen Sie Standortdienste verwenden können, und wie Sie die Auswirkungen auf die Akkulaufzeit in diesen Fällen optimieren können.