Strom und Akku schonen

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

Wear OS-Geräte haben im Vergleich zu größeren Mobilgeräten kleinere Akkus. Daher fällt ein Akkuverbrauch schneller auf. Außerdem ist das Aufladen eines Wear OS-Geräts für den Nutzer aufwendiger als das Aufladen eines Mobilgeräts. Nutzer können ihre Mobilgeräte zu verschiedenen Zeiten über den Tag hinweg aufladen. Wear OS-Geräte müssen jedoch vor dem Aufladen vom Körper abgenommen werden.

Beachten Sie die folgenden Design-Best Practices, um die Energieeffizienz Ihrer App zu verbessern:

  • Das Design Ihrer App sollte den Wear OS-Formfaktor optimal nutzen. Sie sollte nicht direkt Ihre mobile App kopieren.
  • Sie können Ihre vorhandene mobile App für bestimmte Anwendungsfälle verwenden. Internet und Synchronisierung auf der Smartwatch sind beispielsweise ressourcenintensiv. Überlegen Sie, ob das Mobilgerät die Hauptarbeit übernehmen und das Wear OS-Gerät Änderungen an den Daten empfangen kann.
  • Gestalten 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 Arbeit Ihrer App nach Möglichkeit auf den Zeitpunkt, an dem die Smartwatch aufgeladen wird. Das gilt insbesondere für datenintensive Aufgaben wie das Synchronisieren von Daten und das Organisieren von Datenbanken.

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

Dieser Leitfaden hilft Ihnen zu verstehen, 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 Leistungsrichtlinien, z. B. im Leitfaden zur Leistung von Compose auf 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 einem 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 ausgeführt werden kann.

Ereignisse, die sich auf die Akkulaufzeit auswirken

Bevor Sie sich mit Ihrer App beschäftigen, sollten Sie sich erst einmal allgemein mit den Ereignissen befassen, die auf einem Wear OS-Gerät Strom verbrauchen.

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

Veranstaltung Auswirkungen auf die Akkulaufzeit Gegenmaßnahmen
Auf das Netzwerk zugreifen, einschließlich LTE und WLAN Sehr hoch Verschieben Sie den nicht unbedingt erforderlichen Netzwerkzugriff auf den Zeitpunkt, zu dem das Gerät aufgeladen wird.
Display einschalten und interaktiven Modus starten Hoch Fordern Sie den Nutzer nicht auf, das Display länger als nötig eingeschaltet zu lassen. Bieten Sie eine Umgebung, in der der Always-On-Modus (auch Inaktivmodus genannt) verwendet wird.
Auf den GPS-Sensor zugreifen Hoch Warten Sie nach Möglichkeit, bis der Nutzer den GPS-Zugriff anfordert.
Hohe CPU-Auslastung beibehalten Hoch Flows mit Jetpack Compose verwenden
Auf den Herzfrequenzsensor zugreifen Mittel Verwende die Aufwachzeit des Prozessors, wenn du Callbacks von der Sensor API erhältst, z. B. wenn du Health Services on Wear OS verwendest.
Über Bluetooth auf ein anderes Gerät zugreifen Mittel Halten Sie die Sitzungen kurz.
Wakelock beibehalten Mittel Manuelle Erstellung von Wakelocks reduzieren und WorkManager verwenden.

Display-Aktivierungszeit minimieren

Beachten Sie in Ihrer Wear OS App die folgenden Grundsätze zur Bildschirmnutzung:

  • Sperren bei eingeschaltetem Display:Sollten nach Möglichkeit vermieden werden. Deaktiviere zum Testen in den Systemeinstellungen die Option Always-on-Display und prüfe, ob sich das Display innerhalb des Zeitlimits ausschaltet.
  • Animationen:Verwenden Sie möglichst keine aufwendigen Animationen, sondern konzentrieren Sie sich auf kurze Übergänge, um einen professionelleren Look zu erzielen. Vermeiden Sie insbesondere Animationen und Schleifen mit langer Ausführungszeit. Wenn eine Schleife erforderlich ist, fügen Sie zwischen den Schleifen eine Pause ein, die mindestens so lang ist wie die Animation selbst.
  • Zeit im Inaktivmodus: Unterstütze bei Bedarf Always-On, z. B. für Fitness-Anwendungsfälle. Wenn Ihre App den Always-on-Modus erfordert, folgen Sie diesen Empfehlungen für den Inaktivmodus.

CPU-Auslastung minimieren

Beachten Sie in Ihrer Wear OS App die folgenden Grundsätze zur CPU-Nutzung:

  • Fasse dich kurz.
  • Fassen Sie alle zusammengehörigen Vorgänge zusammen, um die Zeit zu maximieren, in der der Prozess Ihrer App im Leerlauf ist.

Wakelocks minimieren

Vermeiden Sie in den meisten Fällen Vorgänge, die verhindern, dass Ihre App in den Ruhezustand wechselt, z. B. Wakelocks. In Gesundheits- und Fitness-Apps ist für lang andauernde Trainings beispielsweise kein Wakelock erforderlich. Verwende die Aufwachzeit des Prozessors, wenn du Callbacks von der Sensor API erhältst, z. B. bei der Verwendung von Health Services on Wear OS.

Es gibt einige Fälle, in denen es in Ordnung ist, einen Wakelock zu erhalten, z. B. wenn Ihre App eine der folgenden Aktionen ausführt:

  • Spielt Medien im Hintergrund ab.
  • Verwendet WorkManager oder JobScheduler. (Das System hält einen Wakelock für Sie, wenn der Job im Hintergrund ausgeführt wird.)

Mit Battery Historian können Sie einzelne Vorkommen 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:

  • Nach unerwarteten Wakelocks suchen
  • Wenn die Dauer länger als erwartet ist, prüfen Sie, ob die Arbeit durch eine Abhängigkeit blockiert wird, z. B. durch die Verfügbarkeit des Netzwerks.

Prüfen, wie Ihre App inaktiv wird

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

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

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

Power Profiler

Der Power Profiler ist im Android Studio-Menü unter View > Tool Windows > Profiler (Ansicht > Toolfenster > Profiler) verfügbar:

  1. Sehen Sie sich den System-Trace an, wenn das Display ausgeschaltet wird und das Gerät in den Inaktivmodus wechselt.
  2. Suchen Sie nach laufenden Vorgängen und nach der CPU-Auslastung des Geräts.

Perfetto

Mit Perfetto können Sie einen Trace aufzeichnen und dann Ihre App untersuchen, um festzustellen, ob Threads aktiv sind, wenn der Bildschirm ausgeschaltet wird, das Gerät in den Ambient-Modus wechselt oder der Nutzer die Aktivität Ihrer App schließt.

Definieren Sie benutzerdefinierte Ereignisse, um wichtige Ereignisse in Ihrer App zu markieren, einschließlich domänenspezifischer Ereignisse. Bei einer Media-App gehören dazu Aufgaben wie das Abrufen von Playlists, das Herunterladen eines bestimmten Media-Elements, 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, die WorkManager verwenden, können Sie Hintergrundarbeiten in Ihrer App ausführen. Einige Hintergrundarbeiten müssen zwar regelmäßig ausgeführt werden, aber Sie sollten Jobs nicht zu häufig oder zu lange ausführen, da dies den Akku des Geräts entladen kann.

Mit Battery Historian können Sie die Ausführung von geplanten Jobs sowohl insgesamt (Systemstatistiken > JobScheduler-Statistiken) als auch nach App (App-Statistiken > Geplanter Job) untersuchen. Prüfen Sie die Gesamtzahl und die Gesamtdauer:

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

Sehen Sie sich auch das Battery Historian-Diagramm 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 angemessen sein.
  • Überlegen Sie, ob die Jobs ausgeführt werden, während Ihre App aktiv ist, oder ob es sich um periodische Hintergrundarbeiten handelt.

Sensoren

Wear OS-Geräte haben viele verschiedene Sensoren, z. B. GPS. In den meisten Fällen sollten Sie Health Services auf Wear OS verwenden, anstatt direkt mit SensorManager zu interagieren. In vielen Fällen werden Daten in den Gesundheitsdiensten intelligent zusammengefasst, um die Akkuleistung zu verbessern.

Führen Sie den folgenden Befehl in einem Terminalfenster auf Ihrem Entwicklungscomputer aus, um die Sensornutzung in Ihrer App zu analysieren:

adb shell dumpsys sensorservice

Die Ergebnisse dieses Befehls zeigen Folgendes:

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

Abmeldung von Sensoren testen

So prüfen Sie, ob Ihre App wie erwartet keine Sensordaten mehr abruft:

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

Prüfen Sie mit dem ADB-Befehl aus dem vorherigen Abschnitt, ob der Sensor korrekt als nicht registriert angezeigt wird.

Datenschicht

Bei 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 nur sparsam verwenden.

Hier sind einige zusätzliche 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 Durch diese Statusänderungen kann das Wear OS-Gerät lokale Datenberechnungen durchführen, z. B. wenn ein Training begonnen hat.

    Übertragen Sie nur Statusänderungen, die Ihre Benutzeroberfläche aktualisieren. Wenn auf dem Aktivitätsbildschirm beispielsweise nur die gelaufenen Kilometer mit einer Dezimalstelle angezeigt werden, sollten Sie nicht jedes Mal eine Statusänderung an Wear OS senden, wenn der Nutzer einen weiteren Meter zurücklegt.

Führen Sie den folgenden Befehl in einem Terminalfenster auf Ihrem Entwicklungscomputer aus, um die Nutzung der Data Layer API in Ihrer App zu analysieren:

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 Daten mithilfe von DataClient festgelegt werden.

Gesundheits- und Fitness-Apps

Wenn Sie eine Gesundheits- und Fitness-App verwalten, verwenden Sie Health Services, um die Sensornutzung Ihrer App zu optimieren.

  • Verwende für ExerciseClient Battery Historian, um das korrekte Verhalten im Inaktivmodus zu überprüfen. Prüfen Sie, ob Ihre App nicht häufiger als alle ein bis zwei Minuten aktiviert wird, um ExerciseUpdate-Daten zu empfangen.
  • Verwenden Sie für das allgemeine Gesundheitsmonitoring über den ganzen Tag hinweg die PassiveMonitoringClient, wie im Leitfaden zum Monitoring von Gesundheits- und Fitnessdaten im Hintergrund beschrieben.

Kacheln und Zusatzfunktionen

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

  • Deaktivieren Sie die automatische Aktualisierung oder erhöhen Sie die Aktualisierungsrate auf mindestens 2 Stunden.
  • Verwenden Sie Firebase Cloud Messaging (FCM) oder entsprechend geplante Jobs, um Datenaktualisierungen zu senden. Achten Sie darauf, dass die Aktualisierungsrate nicht zu hoch ist, da das System sonst wiederholte Aufgaben schneller plant, als der Nutzer oder die Plattform auf die für die Ausführung dieser Aufgaben erforderlichen Daten zugreifen können.
  • Plane keine Aufgaben für deine Kachel oder Komplikation, wenn der Nutzer nicht damit interagiert.
  • Verwenden Sie Offline-First-Ansätze.
  • Eine einzelne Datenbank für Ihre Haupt-App, Kacheln und Zusatzfunktionen verwenden So bleiben die Daten auch auf allen Oberflächen der Benutzeroberfläche konsistent.