Die Verwendung der Standortermittlung im Hintergrund kann die Akkulaufzeit erheblich beeinträchtigen. Android unterstützt Einschränkungen für die Standortermittlung im Hintergrund, sodass Entwickler ihre Anwendungen für eine bessere Akkueffizienz optimieren müssen. Diese Optimierungen sind für alle Geräte von Vorteil, unabhängig von der Android-Version, die darauf ausgeführt wird.
Mit Einschränkungen für die Standortermittlung im Hintergrund:
- Die Standortermittlung im Hintergrund wird gedrosselt und der Standort wird nur wenige Male pro Stunde berechnet und übermittelt.
- WLAN-Scans werden seltener durchgeführt und Standortaktualisierungen werden nicht berechnet, wenn das Gerät mit demselben statischen Zugangspunkt verbunden bleibt.
- Die Reaktionszeit des Geofencing ändert sich von einigen Sekunden auf etwa zwei Minuten. Diese Änderung verbessert die Akkuleistung – auf einigen Geräten um das bis zu Zehnfache.
Erforderliche Kenntnisse
In diesem Dokument wird davon ausgegangen, dass Sie mit den folgenden APIs vertraut sind:
- Standortdienste von Google Diese APIs bieten eine höhere Genauigkeit und belasten den Akku weniger als die Framework-Standort-APIs.
- Fused Location Provider: Diese API kombiniert Signale von GPS, WLAN und Mobilfunknetzen sowie Beschleunigungsmesser, Gyroskop, Magnetometer und anderen Sensoren.
- Geofencing: Diese API basiert auf der Fused Location Provider API und ist für die Akkuleistung optimiert.
Informationen zur Akkuentladung
Die Erfassung von Standortdaten und der Akkuverbrauch hängen folgendermaßen zusammen:
- Genauigkeit: Die Genauigkeit der Standortdaten. Im Allgemeinen gilt: Je höher die Genauigkeit, desto höher der Akkuverbrauch.
- Häufigkeit: Wie oft der Standort berechnet wird. Je häufiger der Standort berechnet wird, desto mehr Akku wird verbraucht.
- Latenz: Wie schnell Standortdaten bereitgestellt werden. Eine geringere Latenz erfordert in der Regel mehr Akkuleistung.
Genauigkeit
Sie können die Standortgenauigkeit mit der Methode setPriority() angeben und einen der folgenden Werte als Argument übergeben:
PRIORITY_HIGH_ACCURACYliefert den genauestmöglichen Standort, der anhand so vieler Eingaben wie nötig berechnet wird. Dabei werden GPS, WLAN und Mobilfunk aktiviert und eine Vielzahl von Sensoren verwendet. Dies kann zu einem erheblichen Akkuverbrauch führen.PRIORITY_BALANCED_POWER_ACCURACYliefert genaue Standortinformationen und optimiert gleichzeitig den Energieverbrauch. GPS wird sehr selten verwendet. In der Regel wird eine Kombination aus WLAN- und Mobilfunkinformationen verwendet, um den Gerätestandort zu berechnen.PRIORITY_LOW_POWERbasiert hauptsächlich auf Mobilfunkmasten und vermeidet GPS- und WLAN-Eingaben. Dadurch wird eine grobe Genauigkeit (auf Stadtebene) bei minimalem Akkuverbrauch erreicht.PRIORITY_PASSIVEempfängt Standorte passiv von anderen Apps, für die der Standort bereits berechnet wurde.
Verwenden Sie die Optionen „Ausgewogene Leistung“ oder „Niedrige Leistung“, um die Standortanforderungen der meisten Apps zu erfüllen. Reserviere die hohe Genauigkeit für Apps, die im Vordergrund ausgeführt werden und Echtzeit-Standortaktualisierungen erfordern, z. B. eine Karten-App.
Häufigkeit
Sie können die Häufigkeit der Standortermittlung auf zwei Arten festlegen:
- Verwenden Sie die Methode
setIntervalMillis(), um das Intervall für die Berechnung des Standorts Ihrer App anzugeben. - Mit der Methode
setMinUpdateIntervalMillis()können Sie das Intervall für den Empfang der Standorte anderer Apps festlegen.
Übergeben Sie bei Verwendung von setIntervalMillis() den größtmöglichen Wert. Dies gilt insbesondere für die Standortermittlung im Hintergrund, die oft den Akku entlädt. Reserviere Intervalle von einigen Sekunden für Anwendungsfälle im Vordergrund.
Die in Android 8.0 (API-Level 26) eingeführten Einschränkungen für die Standortermittlung im Hintergrund erzwingen diese Strategien. Ihre App sollte jedoch versuchen, sie auch auf Geräten mit Android 7.0 (API-Level 24) und niedriger zu erzwingen.
Latenz
Sie können die Latenz mit der Methode setMaxUpdateDelayMillis() angeben. In der Regel wird ein Wert übergeben, der um ein Vielfaches größer ist als das in der Methode setIntervalMillis() angegebene Intervall. Diese Einstellung verzögert die Übermittlung von Standorten. Mehrere Standort-Updates können in Batches übermittelt werden.
Diese beiden Änderungen tragen dazu bei, den Akkuverbrauch zu minimieren.
Wenn deine App nicht sofort ein Standort-Update benötigt, solltest du den größtmöglichen Wert an die Methode setMaxUpdateDelayMillis() übergeben. Dadurch wird die Latenz effektiv gegen mehr Daten und Akkueffizienz eingetauscht.
Wenn Geofences verwendet werden, sollten Apps einen großen Wert an die Methode setNotificationResponsiveness() übergeben, um Energie zu sparen. Ein Wert von fünf Minuten oder mehr wird empfohlen.
Weitere Informationen
Weitere Informationen finden Sie in folgenden Dokumenten:
- Empfehlungen: In diesem Leitfaden werden einige konkrete empfohlene Maßnahmen beschrieben, mit denen du die Auswirkungen deiner App auf die Akkulaufzeit verbessern kannst.
- Anwendungsfälle: In diesem Leitfaden werden mehrere gängige Anwendungsfälle beschrieben, in denen du möglicherweise Standortdienste verwendest, und wie du die Auswirkungen auf die Akkulaufzeit in diesen Fällen optimieren kannst.