Standortermittlung im Hintergrund und Akkulaufzeit

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:

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_ACCURACY liefert 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_ACCURACY liefert 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_POWER basiert hauptsächlich auf Mobilfunkmasten und vermeidet GPS- und WLAN-Eingaben. Dadurch wird eine grobe Genauigkeit (auf Stadtebene) bei minimalem Akkuverbrauch erreicht.
  • PRIORITY_PASSIVE empfä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.