Strom und Akku schonen

Keywords: wearos, power, battery, performance

Die Energieeffizienz ist bei Wear OS besonders wichtig. Die Designprinzipien von Wear OS konzentrieren sich stark auf den Energieverbrauch des Geräts, da die Smartwatch einen kleinen Formfaktor hat und für kurze Interaktionen gedacht ist.

Im Vergleich zu größeren Mobilgeräten haben Wear OS-Geräte kleinere Akkus. Daher ist ein Akkuverbrauch stärker spürbar. Außerdem ist es für Nutzer im Vergleich zu einem Mobilgerät aufwendiger, ein Wear OS-Gerät aufzuladen. Nutzer können ihre Mobilgeräte zwar mehrmals täglich aufladen, müssen ein Wear OS-Gerät aber vom Körper abnehmen, bevor sie es aufladen können.

Beachten Sie die folgenden Best Practices für das Design, um die Energieeffizienz Ihrer App zu verbessern:

  • Das Design Ihrer App sollte den Formfaktor von Wear OS optimal nutzen. Sie sollte Ihre mobile App nicht direkt kopieren.
  • Verwenden Sie Ihre vorhandene mobile App für bestimmte Anwendungsfälle. Beispielsweise ist die Internetnutzung und Synchronisierung auf der Smartwatch teuer. Überlegen Sie, ob das Mobilgerät die Hauptarbeit übernehmen könnte und das Wear OS-Gerät nur Datenänderungen empfängt.
  • Entwerfen Sie Ihre Anwendungsfälle für kürzere Interaktionen.
  • Überlegen Sie, welche Wear OS-Ereignisse Sie verwenden und wie oft diese Ereignisse auftreten.
  • Verschieben Sie die Ausführung Ihrer App nach Möglichkeit auf einen Zeitpunkt, zu dem die Smartwatch geladen wird. Das gilt insbesondere für datenintensive Aufgaben wie die Synchronisierung von Daten und die Organisation von Datenbanken.

    Wenn das Gerät geladen wird und eine WLAN-Verbindung hat, planen Sie Jobs, um Daten, Bilder und Updates vorab abzurufen, die der Nutzer wahrscheinlich in Ihrer App sehen möchte.

In diesem Leitfaden erfahren Sie, wann und wie das System Ihre App ausführt und wie Sie die Laufzeit und den Akkuverbrauch Ihrer App begrenzen können. Weitere Informationen dazu, wie bestimmte Aktionen ausgeführt werden, z. B. das Laden einer App oder das Scrollen durch eine Liste, finden Sie in den Leistungsleitfäden, z. B. im Leitfaden zur Leistung beim Verfassen von Nachrichten unter Wear OS.

Akkunutzung im Zeitverlauf beobachten

Wenn Sie die Akkustatistiken eines Wear OS-Geräts analysieren möchten, auf dem Ihre App ausgeführt wird, geben Sie den folgenden Befehl in ein Terminalfenster auf Ihrem Entwicklungscomputer ein:

adb shell dumpsys batterystats

Eine Bibliothek auf GitHub enthält einen Parser für Akkustatistiken, der zusammen mit diesem Befehl verwendet werden kann.

Ereignisse, die sich auf die Akkulaufzeit auswirken

Bevor Sie sich Gedanken über Ihre App machen, sollten Sie sich allgemein über die Ereignisse informieren, die auf einem Wear OS-Gerät Strom verbrauchen.

In der folgenden Tabelle sehen Sie die relativen Auswirkungen auf die Akkulaufzeit bei mehreren gängigen Ereignissen in Wear OS-Apps. Der genaue Stromverbrauch variiert je nach Gerät.

Veranstaltung Auswirkungen auf die Akkulaufzeit So können Sie das Risiko minimieren
Auf das Netzwerk zugreifen, einschließlich LTE und WLAN Sehr hoch Verschieben Sie den nicht unbedingt erforderlichen Netzwerkzugriff auf das Laden des Geräts.
Display einschalten und interaktiven Modus starten Hoch Bitten Sie Nutzer nicht, das Display länger als nötig eingeschaltet zu lassen. Bieten Sie eine Funktion, die den Inaktivmodus, auch als Bildschirmschonermodus bezeichnet, nutzt.
Zugriff auf den GPS-Sensor Hoch Warten Sie nach Möglichkeit, bis der Nutzer den GPS-Zugriff anfordert.
CPU-Auslastung hoch halten Hoch Mit Jetpack Compose Abläufe nutzen
Auf den Herzfrequenzsensor zugreifen Mittel Verwenden Sie die Aktivitätsdauer des Prozessors, wenn Sie Rückrufe von der Sensor API erhalten, z. B. bei der Verwendung von Gesundheitsdiensten unter Wear OS.
Über Bluetooth auf ein anderes Gerät zugreifen Mittel Halten Sie die Sitzungen kurz.
Wakelock aktivieren Mittel Reduzieren Sie die manuelle Erstellung von Wakelocks und verwenden Sie stattdessen WorkManager.

Displayzeit minimieren

Beachten Sie in Ihrer Wear OS-App die folgenden Prinzipien für die Bildschirmnutzung:

  • Displaysperren:Nach Möglichkeit vermeiden. Deaktivieren Sie zum Testen die Daueranzeige in den Systemeinstellungen und prüfen Sie, ob sich das Display innerhalb des Zeitlimits ausschaltet.
  • Animationen: Verwenden Sie möglichst wenige aufwendige Animationen und konzentrieren Sie sich stattdessen auf kurze Übergänge, um einen professionelleren Eindruck zu erzielen. Vermeiden Sie insbesondere lang laufende Animationen und Schleifen. Wenn eine Schleife erforderlich ist, fügen Sie zwischen den Schleifen eine Pause hinzu, die mindestens so lang ist wie die Animation selbst.
  • Aktivierungszeit im Inaktivmodus:Unterstützen Sie bei Bedarf den Always-On-Modus, z. B. für Fitness-Anwendungen. Wenn für Ihre App der Modus „Immer an“ erforderlich ist, prüfen Sie, ob Ihre App die folgenden Funktionen erfüllt, wenn sich das Gerät im Inaktivmodus befindet:

    • Der Prozentsatz des beleuchteten Displays des Geräts wird reduziert.
    • Es werden keine Animationen angezeigt.
    • Der Inhalt des Bildschirms wird nur bei einem onAmbientUpdate()-Callback aktualisiert.

CPU-Auslastung minimieren

Beachten Sie in Ihrer Wear OS App die folgenden Prinzipien für die CPU-Auslastung:

  • Die Nutzung sollte kurz sein.
  • Führen Sie alle zugehörigen Vorgänge im Batch aus, um die Zeit zu maximieren, in der der Prozess Ihrer App inaktiv ist.

Wakelocks minimieren

Vermeiden Sie in den meisten Fällen Vorgänge, die verhindern, dass Ihre App in den Ruhemodus wechselt, z. B. Wakelocks. In Gesundheits- und Fitness-Apps ist beispielsweise für lang andauernde Trainings keine Wakelock-Funktion erforderlich. Verwenden Sie die Aktivitätsdauer des Prozessors, wenn Sie Callbacks von der Sensor API erhalten, z. B. bei der Verwendung von Gesundheitsdiensten unter Wear OS.

In einigen Fällen ist es in Ordnung, einen Wakelock zu erwerben, z. B. wenn Ihre App Folgendes tut:

  • Medien im Hintergrund abspielen.
  • Verwendet WorkManager oder JobScheduler. Das System hält in Ihrem Namen einen Wakelock, wenn der Job im Hintergrund ausgeführt wird.

Mit Battery Historian können Sie einzelne Vorkommnisse von langen Wakelocks sowie Zusammenfassungen der Gesamtzahl und Dauer der gehaltenen Wakelocks sehen. Prüfen Sie die Anzahl und Dauer der Wakelocks, die Ihre App hält, und vergleichen Sie diese Informationen mit den interaktiven Nutzungsmustern Ihrer App:

  • Prüfen Sie, ob unerwartete Wakelocks auftreten.
  • Wenn die Dauer länger als erwartet ist, prüfen Sie, ob die Arbeit aufgrund einer Abhängigkeit blockiert ist, z. B. aufgrund der Verfügbarkeit des Netzwerks.

Prüfen, warum Ihre App inaktiv wird

Überlegen Sie, was die aktive App tut, wenn wichtige Geräteereignisse auftreten, z. B.:

  • Das Display wird ausgeschaltet und das Gerät wechselt in den Inaktivmodus.
  • Die App wird durch Wischen geschlossen.

Verwenden Sie die Tools in den folgenden Abschnitten, um App-Aktivitäten zu analysieren.

Energieprofiler

Sie können den Power Profiler im Android Studio-Menü unter Ansicht > Toolfenster > Profiler aufrufen:

  1. Prüfen Sie den System-Trace, wenn das Display ausgeht und das Gerät in den Ruhemodus wechselt.
  2. Prüfen Sie, ob Prozesse weiterlaufen, und sehen Sie sich die CPU-Auslastung des Geräts an.

Perfetto

Mit Perfetto können Sie einen Trace aufzeichnen und dann Ihre App prüfen, um festzustellen, ob Threads aktiv sind, wenn sich das Display ausschaltet, das Gerät in den Ruhemodus wechselt oder der Nutzer die Aktivitäten Ihrer App beendet.

Definieren Sie benutzerdefinierte Ereignisse, um wichtige Ereignisse Ihrer App zu markieren, einschließlich domainspezifischer Ereignisse. Bei einer Medien-App gehören dazu Aufgaben wie das Abrufen von Playlists, das Herunterladen eines bestimmten Medienelements, das Starten und Beenden der Wiedergabe. Wenn Sie diese Ereignisse definieren, können Sie sie in Perfetto sehen und ihr Timing mit der CPU- und Stromnutzung Ihrer App vergleichen.

Geplante Jobs Ihrer App analysieren

Mit geplanten Jobs über WorkManager können Sie Hintergrundarbeiten in Ihrer App ausführen. Einige Hintergrundarbeiten müssen zwar regelmäßig ausgeführt werden, Sie sollten Jobs jedoch nicht zu häufig oder zu lange ausführen, da dies den Akku des Geräts belasten kann.

Mit Battery Historian können Sie die Ausführung geplanter Jobs sowohl insgesamt (Systemstatistiken > Job-Scheduler-Statistiken) als auch nach App (App-Statistiken > Geplante Aufgabe) prüfen. Prüfen Sie die Gesamtzahl und die Gesamtdauer:

  • Wenn ein Job sehr häufig ausgeführt wird, sollten Sie diese Häufigkeit verringern.
  • Prüfen Sie, ob die Gesamtausführungszeit Ihren Erwartungen entspricht und nicht wesentlich länger ist.

Sehen Sie sich auch die Battery Historian-Grafik an und prüfen Sie jeden JobScheduler-Eintrag. Wenn Sie den Mauszeiger auf einen bestimmten Eintrag bewegen, zeigt Battery Historian den Eigentümer des ausgeführten Jobs an. Hier einige Tipps:

  • Die Ausführungsdauer sollte für Ihre App sinnvoll sein.
  • Überlegen Sie, ob die Jobs ausgeführt werden, während Ihre App aktiv ist, oder ob es sich um regelmäßige Hintergrundarbeiten handelt.

Sensoren

Wear OS-Geräte haben viele verschiedene Sensoren, z. B. GPS. In den meisten Fällen solltest du Gesundheitsdienste unter Wear OS verwenden, anstatt direkt mit SensorManager zu interagieren. In vielen Fällen werden Daten von Health Services intelligent gruppiert, um die Akkuleistung zu verbessern.

Wenn Sie die Sensornutzung in Ihrer App analysieren möchten, führen Sie den folgenden Befehl in einem Terminalfenster auf Ihrem Entwicklungscomputer aus:

adb shell dumpsys sensorservice

Die Ergebnisse dieses Befehls sehen so aus:

  • Aktuelle und vorherige Sensorregistrierungen.
  • Sensorkonfiguration, einschließlich Batchverarbeitung, falls festgelegt
  • Kürzlich erhobene Stichprobendaten.

Abmeldung von Sensoren testen

Um zu prüfen, ob Ihre App wie erwartet aufhört, Sensordaten abzurufen, testen Sie die folgenden Szenarien:

  1. Wischen Sie die App weg.
  2. Tippen Sie mit der Handfläche auf das Display. Dadurch wird das Display entweder ausgeschaltet oder in den Inaktivmodus versetzt.

Verwenden Sie den ADB-Befehl aus dem vorherigen Abschnitt, um zu prüfen, ob der Sensor korrekt als nicht registriert angezeigt wird.

Datenschicht

Bei der Verwendung der Data Layer API wird bei jeder Übertragung etwas Strom verbraucht. Wenn Sie diese API zum Senden von Daten verwenden, muss Ihre App aktiviert werden, um die Daten zu empfangen. Aus diesen Gründen sollten Sie diese API sparsam verwenden.

Weitere Best Practices für die Verwendung der Data Layer API:

  • Warten Sie, bis Ihre App aktiv ist, bevor Sie einen Listener mit WearableListenerService einrichten.
  • Zustandsänderungen übertragen, anstatt schnelle Updates zu konfigurieren Anhand dieser Statusänderungen kann das Wear OS-Gerät lokale Daten berechnen, z. B. wenn eine Trainingseinheit gestartet wird.

    Übertragen Sie nur Statusänderungen, die Ihre Benutzeroberfläche aktualisieren. Wenn auf Ihrem Aktivitätsbildschirm beispielsweise nur „Kilometer zurückgelegt“ mit einer Nachkommastelle angezeigt wird, senden Sie nicht jedes Mal, wenn sich der Nutzer einen Meter weiterbewegt, eine Statusänderung an Wear OS.

Wenn Sie die Nutzung der Data Layer API in Ihrer App analysieren möchten, führen Sie den folgenden Befehl in einem Terminalfenster auf Ihrem Entwicklungscomputer aus:

adb shell dumpsys activity service WearableService

Die Ergebnisse dieses Befehls umfassen Folgendes:

  • RpcService:Hier sehen Sie, wie oft und welche Pfade mit MessageClient aufgerufen werden.
  • DataService:Hier sehen Sie, wie oft Datenelemente mit DataClient festgelegt werden.

Gesundheits- und Fitness-Apps

Wenn Sie eine Gesundheits- und Fitness-App verwalten, können Sie mithilfe der Gesundheitsdienste die Nutzung von Sensoren in Ihrer App optimieren.

  • Verwenden Sie für ExerciseClient den Akku-Historie-Dienst, um das korrekte Verhalten im Inaktivitätsmodus zu prüfen. Achten Sie darauf, dass Ihre App nicht häufiger als alle ein bis zwei Minuten aktiviert wird, um ExerciseUpdate-Daten zu empfangen.
  • Wenn Sie den allgemeinen Gesundheitsstatus den ganzen Tag lang im Blick behalten möchten, verwenden Sie die PassiveMonitoringClient, wie im Leitfaden zum Überwachen von Gesundheits- und Fitnessdaten im Hintergrund beschrieben.

Ansichten und Zusatzfunktionen

Wenn Ihre App eine Kachel oder eine Zusatzfunktion unterstützt, beachten Sie die folgenden Best Practices:

  • Deaktivieren Sie die automatische Aktualisierung oder erhöhen Sie die Aktualisierungsrate auf mindestens zwei Stunden.
  • Verwenden Sie Firebase Cloud Messaging (FCM) oder angemessen geplante Jobs, um Datenupdates zu senden. Achten Sie darauf, dass die Aktualisierungen nicht zu schnell erfolgen, da das System sonst wiederholte Aufgaben schneller planen kann, als der Nutzer oder die Plattform auf die für die Ausführung dieser Aufgaben erforderlichen Daten zugreifen kann.
  • Planen Sie keine Arbeit für Ihre Kachel oder Zusatzfunktion, wenn der Nutzer nicht damit interagiert.
  • Verwenden Sie Offline-first-Ansätze.
  • Eine einzige Datenbank für Ihre Haupt-App, Kacheln und Zusatzfunktionen verwenden So bleiben die Daten auch auf verschiedenen Benutzeroberflächen konsistent.