Strom und Akku schonen

Unter Wear OS ist die Energieeffizienz besonders wichtig. Die Designprinzipien von Wear OS konzentrieren sich hauptsächlich auf den Stromverbrauch des Geräts, da die Smartwatch ein kleiner Formfaktor für kurze Interaktionen ist.

Im Vergleich zu größeren Mobilgeräten haben Wear OS-Geräte einen kleineren Akku, sodass sich der Akku stärker entlädt. Außerdem erfordert das Aufladen eines Wear OS-Geräts im Vergleich zu einem Mobilgerät mehr Aufwand. Nutzer können ihr Mobilgerät zwar im Laufe des Tages in verschiedenen Intervallen aufladen, müssen aber ein Wear OS-Gerät vom Körper trennen, bevor es aufgeladen wird.

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

  • Beim Design Ihrer App sollte der Wear OS-Formfaktor gut ausgenutzt werden. Ihre mobile App sollte nicht direkt kopiert werden.
  • Verwenden Sie Ihre bestehende mobile App für bestimmte Anwendungsfälle. Beispielsweise sind Internet und Synchronisierung auf der Smartwatch teuer. Überlegen Sie, ob das Mobilgerät die mühsame Arbeit erledigt und das Wear OS-Gerät Datenänderungen empfängt.
  • Entwerfen Sie Ihre Anwendungsfälle für kürzere Interaktionen.
  • Überlege, welche Wear OS-Ereignisse du verwendest und wie oft diese Ereignisse auftreten.
  • Verschieben Sie die Arbeit Ihrer App nach Möglichkeit, bis die Smartwatch geladen wird. Dies gilt insbesondere für datenintensive Aufgaben wie das Synchronisieren von Daten und das Organisieren von Datenbanken.

    Wenn das Gerät geladen wird und mit einem WLAN verbunden ist, können Sie Jobs so planen, dass Daten, Bilder und Updates vorab abgerufen werden, 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 Ihrer App einschränken und den Akkuverbrauch reduzieren 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 Hinweisen zur Leistung, z. B. im Leitfaden zur Leistung von Compose on Wear OS.

Akkunutzung im Zeitverlauf im Blick behalten

Geben Sie den folgenden Befehl in ein Terminalfenster auf Ihrem Entwicklungscomputer ein, um die Akkustatistiken eines Wear OS-Geräts zu analysieren, auf dem Ihre App ausgeführt wird:

adb shell dumpsys batterystats

Eine Bibliothek auf GitHub enthält einen Parser für Akkustatistiken, der zusammen mit diesem Befehl ausgeführt werden könnte.

Ereignisse, die sich auf die Akkulaufzeit auswirken

Bevor Sie sich speziell für Ihre App Gedanken machen, sollten Sie sich allgemeiner überlegen, welche Ereignisse den Akku eines Wear OS-Geräts belasten.

Die folgende Tabelle zeigt die relative Auswirkung 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 Minderung von Risiken
Zugriff auf das Netzwerk, einschließlich LTE und WLAN Sehr hoch Verschiebe unwichtige Netzwerkzugriffe, bis das Gerät aufgeladen wird.
Display einschalten und interaktiven Modus starten Hoch Du solltest den Nutzer nicht dazu auffordern, den Bildschirm 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 Benutzer GPS-Zugriff anfordert.
Hohe CPU-Auslastung beibehalten Hoch Verbrauchsflüsse mit Jetpack Compose.
Auf Herzfrequenzsensor zugreifen Medium Verwende die Aktivzeit des Prozessors, wenn Callbacks von der Sensor API empfangen werden, z. B. bei der Verwendung von Gesundheitsdiensten unter Wear OS.
Über Bluetooth auf ein anderes Gerät zugreifen Medium Halte die Sitzungen kurz.
Wakelock halten Medium Reduzieren Sie das manuelle Erstellen von Wakelocks und verwenden Sie WorkManager.

Bildschirmzeit minimieren

Halten Sie sich in Ihrer Wear OS-App an die folgenden Prinzipien für die Bildschirmnutzung:

  • Displaysperre:Vermeiden Sie nach Möglichkeit die Funktion. Deaktivieren Sie zum Testen die Option Always-On-Display in den Systemeinstellungen und prüfen Sie, ob der Bildschirm innerhalb des Zeitlimits ausschaltet.
  • Animationen:Minimieren Sie aufwendige Animationen und konzentrieren Sie sich stattdessen auf kurze Übergänge, um einen professionelleren Look zu schaffen. Vermeiden Sie insbesondere Animationen und Schleifen mit langer Laufzeit. Wenn eine Schleife erforderlich ist, fügen Sie eine Pause zwischen den Schleifen hinzu, die mindestens der Länge der Animation entspricht.
  • Wachzeit im Inaktivmodus:Unterstützung, die bei Bedarf immer aktiv ist, z. B. für Fitness-Anwendungsfälle. Wenn für Ihre App eine Always-On-Funktion erforderlich ist, prüfen Sie, ob im Inaktivmodus die folgenden Schritte ausgeführt werden:

    • Verringert den Prozentsatz des beleuchteten Displays.
    • Zeigt keine Animationen an.
    • Der Bildschirminhalt wird nur während eines onAmbientUpdate()-Callbacks aktualisiert.

CPU-Nutzung minimieren

Halten Sie sich in Ihrer Wear OS-App an die folgenden CPU-Nutzungsprinzipien:

  • Halten Sie die Nutzung kurz.
  • Fassen Sie alle zugehörigen Vorgänge in Batches zusammen, um die Zeit zu maximieren, in der der Prozess der Anwendung inaktiv ist.

Wakelocks minimieren

Vermeiden Sie in den meisten Fällen Vorgänge, die den Ruhemodus Ihrer App verhindern, z. B. Wakelocks. In Gesundheits- und Fitness-Apps ist beispielsweise für Trainings mit langer Ausführungszeit kein Wakelock erforderlich. Verwenden Sie die Aktivzeit des Prozessors, wenn Sie Callbacks von der Sensor API empfangen, z. B. bei der Verwendung von Gesundheitsdiensten unter Wear OS.

In einigen Fällen ist es in Ordnung, einen Wakelock abzurufen, z. B. wenn Ihre App einen der folgenden Schritte ausführt:

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

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

  • Suchen Sie nach unerwarteten Wakelocks.
  • Wenn die Dauer länger als erwartet ist, überlegen Sie, ob die Arbeit aufgrund einer Abhängigkeit wie der Verfügbarkeit des Netzwerks blockiert wird.

Prüfen, wie Ihre App inaktiv wird

Überlegen Sie, was die aktive App tut, wenn wichtige Geräteereignisse auftreten, wie zum Beispiel:

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

Verwenden Sie zum Analysieren der App-Aktivitäten die in den folgenden Abschnitten beschriebenen Tools.

Energie-Profiler

Energy Profiler kann im Android Studio-Menü unter View > Tool Windows > Profiler aufgerufen werden:

  1. Prüfen Sie den System-Trace, wenn der Bildschirm ausgeht und das Gerät in den Inaktivmodus wechselt.
  2. Suchen Sie nach weiteren Arbeiten und nach dem CPU-Nutzungsgrad des Geräts.

Perfetto

Mit Perfetto können Sie einen Trace aufzeichnen und dann in Ihrer App nachsehen, ob Threads vorhanden sind, die Aufgaben ausführen, wenn entweder der Bildschirm ausgeschaltet wird, das Gerät in den Inaktivmodus wechselt oder der Nutzer die App-Aktivität abnimmt.

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

Geplante Jobs der App analysieren

Mit geplanten Jobs können Sie mit WorkManager Hintergrundarbeiten in Ihrer App ausführen. Auch wenn einige Hintergrundarbeiten regelmäßig sein müssen, sollten Sie Jobs nicht zu häufig oder über einen längeren Zeitraum ausführen, da dies den Akku des Geräts belasten kann.

Verwenden Sie Battery Historian, um die Ausführung von geplanten Jobs insgesamt (Systemstatistiken > Jobscheduler-Statistiken) und nach App (App-Statistiken > Geplanter Job) zu prüfen. Prüfen Sie die Gesamtzahl und die Gesamtdauer:

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

Sehen Sie sich auch das Diagramm „Akku Historian“ an, indem Sie sich jeden JobScheduler-Eintrag ansehen. Wenn Sie den Mauszeiger auf einen bestimmten Eintrag bewegen, zeigt „Akkuverlauf“ den Inhaber des ausgeführten Jobs an. Hier einige Tipps:

  • Für Ihre App sollte die Ausführungsdauer sinnvoll sein.
  • Überlegen Sie, ob die Jobs ausgeführt werden, während die Anwendung ausgeführt wird, oder ob die Jobs regelmäßige Hintergrundarbeiten darstellen.

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 fasst Health Services Daten intelligent in Batches zusammen, um die Akkuleistung zu verbessern.

Zum Analysieren der Sensornutzung in Ihrer App führen Sie den folgenden Befehl in einem Terminalfenster auf dem Entwicklungscomputer aus:

adb shell dumpsys sensorservice

Die Ergebnisse dieses Befehls zeigen Folgendes:

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

Aufheben der Registrierung von Sensoren testen

Testen Sie die folgenden Szenarien, um zu prüfen, ob Ihre App Sensordaten nicht mehr wie erwartet abruft:

  1. App durch Wischen schließen.
  2. Tippe mit der Handfläche auf das Display. Dadurch wird der Bildschirm entweder ausgeschaltet oder in den Inaktivmodus versetzt.

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

Datenschicht

Wenn Sie die Data Layer API verwenden, verbraucht jede Übertragung einen gewissen Stromverbrauch. Insbesondere wenn Sie diese API zum Senden von Daten verwenden, muss Ihre Anwendung den Ruhemodus beenden, um die Daten zu empfangen. Seien Sie daher bei der Nutzung dieser API vorsichtig.

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

  • Warten Sie, bis die Anwendung aktiv ist, bevor Sie mit WearableListenerService einen Listener einrichten.
  • Statusänderungen übertragen, anstatt schnelle Aktualisierungen zu konfigurieren. Mit diesen Statusänderungen kann das Wear OS-Gerät lokale Datenberechnungen ausführen, z. B. wann eine Trainingssitzung gestartet wurde.

    Übertragen Sie nur Statusänderungen, die Ihre UI aktualisieren. Wenn auf Ihrem Aktivitätsbildschirm beispielsweise nur „Kilometer gelaufen“ auf eine Dezimalstelle angezeigt wird, senden Sie nicht jedes Mal eine Statusänderung an Wear OS, wenn der Nutzer ein weiteres Messgerät vorwärts bewegt.

Um die Data Layer API-Nutzung in Ihrer Anwendung zu analysieren, führen Sie den folgenden Befehl in einem Terminalfenster auf Ihrem Entwicklungscomputer aus:

adb shell dumpsys activity service WearableService

Dieser Befehl liefert folgende Ergebnisse:

  • RpcService:Hiermit können Sie sehen, wie oft und welche Pfade mit MessageClient aufgerufen werden.
  • DataService:Zeigt an, wie oft Datenelemente mit DataClient festgelegt werden.

Gesundheits- & Fitness-Apps

Wenn Sie eine Gesundheits- und Fitness-App anbieten, verwenden Sie Gesundheitsdienste, um die Verwendung von Sensoren durch Ihre App zu optimieren.

  • Verwende für ExerciseClient den Akkuverlauf, um das korrekte Verhalten im Inaktivmodus zu prüfen. Die Anwendung sollte nicht häufiger als alle ein bis zwei Minuten aktiviert werden, um ExerciseUpdate-Daten zu empfangen.
  • Verwende für die ganztägige allgemeine Gesundheitsüberwachung den PassiveMonitoringClient, wie in der Anleitung zum Monitoring von Gesundheits- und Fitnessdaten im Hintergrund beschrieben.

Kacheln und Zusatzfunktionen

Wenn Ihre App eine Kachel oder eine Zusatzfunktion unterstützt, befolgen Sie diese Best Practices:

  • 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, eine schnelle Aktualisierungsrate zu verhindern. Dies kann dazu führen, dass das System wiederkehrende Arbeiten schneller plant, als der Nutzer oder die Plattform auf die für diese Arbeit erforderlichen Daten zugreifen kann.
  • Planen Sie keine Arbeiten für die Kachel oder die Zusatzfunktion, wenn der Nutzer nicht damit interagiert.
  • Offline-orientierte Ansätze verwenden.
  • Du kannst eine einzige Datenbank für deine Haupt-App, Kacheln und Zusatzfunktionen verwenden. Dies trägt auch zur Einheitlichkeit der Daten auf allen UI-Oberflächen bei.