Stromverbrauch Ihrer App optimieren

In diesem Dokument werden Best Practices zur Optimierung des Stromverbrauchs in einer mobilen Navigations-App beschrieben, die Sie mit dem Navigation SDK erstellen. Gleichzeitig werden die Vor- und Nachteile beschrieben, die bei der Anwendung dieser Methoden zu berücksichtigen sind. In diesem Dokument wird insbesondere Folgendes behandelt:

  • Quellen für hohen Energieverbrauch, absteigend sortiert.
  • Strategien zur Optimierung des Energieverbrauchs nach ihrer Wichtigkeit, beginnend mit der Framerate.
  • Endnutzerstrategien, mit denen Sie Ihren App-Nutzern erklären können, wie sie ihre Gerätenutzung während der Navigation verwalten können

Warum sollte ich meine Navigations-App optimieren?

Je nach Situation führen die Nutzer Ihrer App möglicherweise über einen längeren Zeitraum Navigationshinweise aus. Fahrer und Kurierdienste können beispielsweise lange Arbeitszeiten haben und Aufträge in unbekannten Gebieten erledigen. In diesen Fällen verlassen sie sich stark auf die detaillierte Routenführung in der App. Dies führt zu einigen typischen Problemen:

  • Schnelle Akkuentladung und Verfügbarkeit von Ladegeräten Eine intensive Nutzung der Navigation kann dazu führen, dass sich die Akkus der Geräte schneller als erwartet entladen. Viele Nutzer können das Problem beheben, indem sie ihr Gerät im Fahrzeug aufladen. Für Motorradfahrer ist das nicht der Fall.
  • Gerätedrosselung aufgrund von Hitze. Auch bei Nutzern, die ihr Gerät ständig aufladen, können Probleme auftreten. Ein hoher Stromverbrauch über einen längeren Zeitraum kann dazu führen, dass sich das Gerät erwärmt, was zu einer thermischen Drosselung und anschließendem Leistungsverlust führt.

Apps mit detaillierter Routenführung nutzen energieintensive Funktionen wie Bildschirm-, GPS- und Funkkommunikation mit Mobilfunkmasten. Daher ist es eine Best Practice, den Stromverbrauch Ihrer mobilen App zu optimieren. Außerdem sollten Sie den Stromverbrauch der Zielgruppe berücksichtigen, um den richtigen Kompromiss zwischen Leistung und Optimierung des Stromverbrauchs zu finden.

Was verbraucht am meisten Strom?

In diesem Abschnitt werden die mit einem hohen Stromverbrauch verbundenen In-App-Aktivitäten in zwei Kategorien unterteilt:

  • Bildschirm-Rendering
  • Standortaktualisierungen

Bildschirm-Rendering

Das Bildschirm-Rendering verursacht in der Regel den höchsten Stromverbrauch in mobilen Navigations-Apps. Jedes Mal, wenn das Gerät eine Karte und andere UI-Elemente auf dem Bildschirm zeichnet, ist die GPU- und CPU-Verarbeitung erforderlich. Ähnlich verhält es sich, wenn der Nutzer den Bildschirm längere Zeit eingeschaltet lässt.

Ein hoher Stromverbrauch ist bei Fahrern oder Fahrgästen zu erwarten, die sich auf einer sichtbaren Karte orientieren können, vor allem, wenn sie die App viele Stunden ununterbrochen verwenden. In diesem Szenario rendert die App außerdem auf dem Bildschirm eine höhere Renderingrate, da die Karte dann in Echtzeit aktualisiert wird. In einigen Fällen kann der Bildschirm fast kontinuierlich neu gezeichnet werden, insbesondere wenn der Nutzer ohne Pause von Ort zu Ort fährt.

Standortaktualisierungen

Neben dem Bildschirm-Rendering verbrauchen zwei weitere Navigationsaktivitäten Geräteenergie:

  • Mobilfunkmast und GPS-Nutzung
  • Standortaktualisierungen und -freigaben, z. B. um eine voraussichtliche Ankunftszeit anzugeben oder die Position eines Fahrzeugs in einer Flotte zu melden.

Sowohl GPS als auch Mobilfunkkommunikation erfordern energieintensive Startvorgänge: GPS muss Satelliten finden und Mobilfunkgeräte müssen mit den Sendemasten verhandeln und eine Verbindung herstellen. Aus diesen Gründen werden sie im Wesentlichen während der Navigation ununterbrochen ausgeführt, obwohl Funkschnittstellen 20 bis 30 Sekunden lang aktiv bleiben, um die Startkosten zu minimieren. Diese Einstellungen werden vom Betriebssystem gesteuert, die Sie nicht einfach in Ihrer Anwendung konfigurieren können.

Bei Standortaktualisierungen variiert der Stromverbrauch aufgrund unvorhersehbarer Faktoren. Der Stromverbrauch wird beispielsweise durch die Entfernung zwischen dem Gerät und der Mobilfunk-Basisstation bestimmt, da das Gerät das geringste Signal verwendet, das für die weitere Navigation erforderlich ist, um den Wechsel der Sendemasten zu vermeiden. Daher verbraucht ein Gerät, das sich in einem Bereich mit schlechter Verbindung befindet, mehr Strom als ein Gerät, das sich in der Nähe einer Basisstation befindet. Außerdem teilen einige Apps Standortaktualisierungen möglicherweise mit einem zentralen Flottenverwaltungsdienst und müssen daher mit einem Server kommunizieren, um dies zu erreichen.

Stromverbrauch der App optimieren

Die Herausforderung bei der Optimierung des Stromverbrauchs in Navigations-Apps besteht darin, dass diese Apps stark von energieverbrauchenden Ressourcen abhängig sind. Dadurch sind Ihre Möglichkeiten zur Minderung der Auswirkungen eingeschränkt, ohne Kompromisse wie die Einschränkung der Bildschirmnutzung einzugehen. In diesem Abschnitt finden Sie eine Liste mit Ansätzen, die Sie bei der Optimierung Ihrer Anwendung verfolgen können, und zwar in absteigender Reihenfolge.

Framerate ändern

Die angezeigten Inhalte werden auf dem Bildschirm mit der sogenannten Framerate aktualisiert. Die Framerate wird normalerweise in Frames pro Sekunde (fps) gemessen. Da das Bildschirmrendering viel CPU oder GPU beansprucht, können Sie die Framerate reduzieren, um Strom zu sparen.

Der Nachteil bei der Reduzierung der Framerate besteht darin, dass das Bildschirm-Rendering weniger reibungslos aussehen kann, insbesondere wenn die Karte häufig aktualisiert wird. Dies ist unter Umständen am offensichtlichsten, wenn die Karte vergrößert wird, um Details zu erkennen, wenn der Nutzer mit hoher Geschwindigkeit unterwegs ist oder wenn die Geschwindigkeit oder Richtung stark geändert wird.

Weitere Informationen zum Ändern der Framerate findest du in der Entwicklerdokumentation für Android Media Dev Center im Abschnitt Framerate.

Sie können zwar nicht steuern, wie der Endnutzer die Bildschirmhelligkeit seines Geräts einstellt oder wie lange er den Bildschirm eingeschaltet lässt, aber Sie können eine Navigationsführung ohne Karte bereitstellen. Auf diese Weise kann der Endnutzer diese Option auswählen, um Energie zu sparen. Wenn Fahrer beispielsweise regelmäßig in derselben Umgebung arbeiten, benötigen sie möglicherweise nicht so oft eine kartenbasierte Anleitung. Eine Navigation ohne Karte lässt sich aktivieren, indem Sie im Navigation SDK ein Ziel festlegen und die Navigation starten, aber keine Karte anzeigen lassen.

Fügen Sie zum Ausblenden der Navigations-UI weder ein NavigationView- noch ein SupportNavigationFragment-Element hinzu. Falls Sie dies bereits getan haben, entfernen Sie den Code, durch den sie hinzugefügt werden. Der folgende Code wurde gegenüber der Android-Demo-App des Navigation SDK geändert. Er zeigt, wie der Code, mit dem die Navigations-UI hinzugefügt wird, mithilfe von Kommentaren entfernt wird:

//Obtain a reference to the NavigationFragment
//setContentView(R.layout.activity_nav_fragment);
//mNavFragment = (SupportNavigationFragment)   getSupportFragmentManager().findFragmentById(R.id.navigation_fragment);

Das Navigation SDK aktualisiert weiterhin die Aufnahmeorte, die voraussichtliche Ankunftszeit und die verbleibende Fahrtstrecke. Ihre App kann weiterhin alle vom SDK ausgelösten Ereignisse abonnieren, während der Fahrer weiterfährt. Das ist nicht für jeden Anwendungsfall geeignet und auch dann nicht sinnvoll, wenn der Fahrer die Karte sehen und der visuellen Anleitung folgen muss. Auf den folgenden Screenshots sehen Sie einen Vergleich, bei dem während der aktiven Navigation zwischen Kartenansichten gewechselt werden kann.

Demo-App mit sichtbarer Kartenansicht
Abbildung 1: iOS-Demo-App mit Navigation SDK und Data Back-Demo
Demo-App wird ausgeführt, ohne dass eine Kartenansicht zu sehen ist.
Abbildung 2: Die Demo-App wird ohne sichtbare Kartenansicht ausgeführt. Die verbleibende Zeit, die Entfernung und der an der Straße angezeigte Standort werden noch aktualisiert.

Dunklen Kartenstil verwenden

Erwägen Sie, die Karte so zu gestalten, dass ein dunkles Design verwendet wird, um den Energieaufwand zum Rendern der Karte auf dem Bildschirm zu reduzieren.

Das Navigation SDK rendert seine Karten mit dem Google Maps SDK for Android. Es enthält Optionen zum Gestalten von Kartenansichten, die keine Navigationsansichten in Ihrer App sind. Die Navigationsansicht unterstützt auch das Erzwingen des dunklen Modus. Dies wirkt sich aufgrund von unterschiedlichen Bildschirmtypen möglicherweise nicht auf alle Geräte gleich aus, kann aber in einigen Fällen trotzdem zu Energieeinsparungen führen. Eine aktuelle Studie hat gezeigt, dass die durch den dunklen Modus gesparte Energie auf einigen Bildschirmen davon abhängt, wie hell das Display zu Beginn ist. Mit dem dunklen Modus wird beispielsweise auf Bildschirmen mit voller Helligkeit mehr Energie gespart als bei Bildschirmen, deren Helligkeit bereits auf 30–50% des Maximums eingestellt ist. Das ist wichtig, wenn Sie den dunklen Modus für Ihre Apps verwenden, da die Energieeinsparungen davon abhängen, wie der Endnutzer die Bildschirmhelligkeit festlegt.

Weitere Informationen zum Ändern der Navigations-UI finden Sie unter Navigations-UI ändern.

Screenshot des Navigation SDK auf einem iPhone 15 Pro mit dunklem Kartenstil
Abbildung 3: Mit einem dunklen Kartenstil konfiguriertes Navigations-SDK

Wenn Sie einen dunklen Stil für Ihre Karte erstellen möchten, verwenden Sie das Objekt MapStyleOptions mit einem JSON-Stil, der den von Ihnen ausgewählten dunklen Kartenstil darstellt. Legacy-JSON-Stile können mit dem Legacy-Stileditor unter https://mapstyle.withgoogle.com/ erstellt werden.

Häufigkeit der GPS-Standortaktualisierung ändern

Bei der Berücksichtigung des Stromverbrauchs aus Standortaktualisierungen, die vom Gerät gesendet werden, sollten Sie sich mehr auf die Häufigkeit der Standortaktualisierungen als auf die Datenmenge konzentrieren, die bei der Übertragung gesendet wird.

Dies lässt sich nicht direkt über das Navigation SDK steuern. Wenn Ihre Android-App den Standort jedoch unabhängig anfordert, sollten Sie die Empfehlungen im Artikel Standort für Akku optimieren in der Android-Entwicklerdokumentation berücksichtigen. Dasselbe gilt für die Verwendung von Nicht-GPS-Standortquellen (Mobilfunk und WLAN).

Nutzer schulen

Die Nutzer Ihrer Anwendung möchten möglicherweise wissen, wie sie ihren Energieverbrauch optimieren können. Empfehlen Sie Ihren Nutzern Folgendes, um den Stromverbrauch ihrer Anwendungen zu reduzieren:

  • Smartphone sperren
  • Navigations-App im Hintergrund platzieren
  • Verwenden Sie die Navigation möglichst ohne Karte.
  • Reduzieren Sie die Bildschirmhelligkeit, indem Sie entweder den dunklen Modus für OLED- und AMOLED-Bildschirme verwenden oder die automatische Helligkeit aktivieren.
  • Gerät kühl halten
  • Mit WLAN im Fahrzeug verbinden, falls verfügbar
Tipps für Endnutzer zum Verlängern der Akkulaufzeit unter Android finden Sie unter Akkulaufzeit von Android-Geräten optimieren. Denken Sie daran, dass dieser Hinweis Maßnahmen umfasst, die die Effektivität einer Navigations-App beeinträchtigen können, wie im Abschnitt Stromverbrauch Ihrer App optimieren in diesem Leitfaden erläutert.

Energieverbrauch messen

Sie können professionelle Tools verwenden, um den Stromverbrauch zu messen, aber es ist oft schwierig oder kostspielig, sie zu erhalten. Apps und IDE-Profilerstellungstools wie Power Profiler in Android Studio und der Bereich „Akkunutzung“ in XCode Organizer messen den Stromverbrauch. Es kann jedoch schwierig sein, die Auswirkungen von Hintergrundprozessen zu entfernen oder eine Leistungs-Baseline für die Messung festzulegen. In einigen Fällen können Geräteeinschränkungen den Zugriff auf die erforderlichen Daten verhindern.

Sie können eine spezielle Hardware zur Leistungsüberwachung verwenden und die Konfiguration der Akkuverbindung ändern. Dazu gibt es kommerzielle Produkte und Dienste. Beachten Sie, dass die Garantie für das Gerät erlischt, wenn Geräte auf diese Weise verändert werden.