Strom und Akku schonen

Energieeffizienz ist unter Wear OS besonders wichtig. Bei den Designprinzipien für Wear OS liegt der Schwerpunkt auf der Akkunutzung von Geräten, da die Smartwatch ein kleiner Formfaktor ist, der für kurze Interaktionen gedacht ist.

Im Vergleich zu größeren Mobilgeräten haben Wear OS-Geräte einen kleineren Akku, sodass eine schnelle Akkuentladung deutlicher ist. Außerdem ist das Laden eines Wear OS-Geräts im Vergleich zu einem Mobilgerät aufwendiger. Nutzer können ihre Mobilgeräte den ganzen Tag über in verschiedenen Intervallen aufladen. Vor dem Aufladen müssen sie jedoch ein Wear OS-Gerät vom Körper trennen.

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

  • Beim Design Ihrer App sollte der Formfaktor Wear OS gut eingesetzt werden. Ihre mobile App sollte nicht direkt kopiert werden.
  • Du kannst deine bestehende mobile App für bestimmte Anwendungsfälle verwenden. Zum Beispiel sind Internet und Synchronisierung auf der Uhr teuer. Überlegen Sie, ob das Mobilgerät die schwierigen Aufgaben übernehmen könnte und das Wear OS-Gerät Änderungen an Daten empfängt.
  • Entwerfen Sie Anwendungsfälle für kürzere Interaktionen.
  • Überlege, welche Wear OS-Ereignisse du verwendest und wie oft diese Ereignisse auftreten.
  • Nach Möglichkeit solltest du die Arbeit deiner App zurückstellen, 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 aufgeladen wird und über eine WLAN-Verbindung verfügt, planen Sie Jobs zum Vorabruf von Daten, Bildern und Updates, 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 der App und die Akkuentladung einschränken können. Weitere Informationen dazu, wie bestimmte Aktionen umgesetzt werden – z. B. das Laden einer App oder das Scrollen durch eine Liste – findest du im Leitfaden zur Leistung, z. B. im Leitfaden zum Erstellen von Texten unter Wear OS.

Akkunutzung im Zeitverlauf überwachen

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 battery Stats-Parser, der zusammen mit diesem Befehl ausgeführt werden kann.

Ereignisse, die sich auf die Akkulaufzeit auswirken

Bevor du dich konkret auf deine App machst, solltest du allgemeiner über die Ereignisse nachdenken, die auf einem Wear OS-Gerät Strom verbrauchen.

Die folgende Tabelle zeigt die relativen Auswirkungen auf die Akkulaufzeit bei mehreren häufigen Ereignissen in Wear OS-Apps. Der genaue Stromverbrauch variiert je nach Gerät.

Veranstaltung Auswirkungen auf die Akkulaufzeit Minderung
Auf das Netzwerk zugreifen, einschließlich LTE und WLAN Sehr hoch Verschieben Sie unwichtigen Netzwerkzugriff auf, bis das Gerät aufgeladen wird.
Display aktivieren und interaktiven Modus starten Hoch Ermutige den Nutzer nicht, den Bildschirm länger als nötig eingeschaltet zu lassen. Der Always-On-Modus wird auch als Inaktivmodus bezeichnet.
Auf GPS-Sensor zugreifen Hoch Warte wenn möglich, bis der Nutzer den GPS-Zugriff anfordert.
CPU-Auslastung hoch halten Hoch Abläufe mit Jetpack Compose verarbeiten
Auf Herzfrequenzsensor zugreifen Medium Die Wachzeit des Prozessors wird verwendet, wenn Callbacks von der Sensor API empfangen werden, z. B. bei der Verwendung von Health Services unter Wear OS.
Über Bluetooth auf ein anderes Gerät zugreifen Medium Halten Sie die Sitzungen kurz.
Einen Wakelock halten Medium Reduzieren Sie die manuelle Erstellung von Wakelocks und verwenden Sie WorkManager.

Gerätenutzungsdauer minimieren

Halten Sie sich in Ihrer Wear OS-App an die folgenden Prinzipien zur Bildschirmnutzung:

  • Displaysperren:Vermeiden Sie das Sperren nach Möglichkeit. Deaktiviere zum Testen die Option Always-On-Display in den Systemeinstellungen und prüfe, ob der Bildschirm innerhalb des Zeitlimits ausgeschaltet wird.
  • Animationen:Minimieren Sie aufwendige Animationen und konzentrieren Sie sich stattdessen auf kurze Übergänge, um einen professionelleren Look zu verleihen. Vermeiden Sie insbesondere lange Animationen und Schleifen. Wenn eine Schleife erforderlich ist, fügen Sie zwischen den Schleifen eine Pause ein, die mindestens so lang ist wie die Animation selbst.
  • Aktivzeit im Inaktivmodus:Die Unterstützung ist bei Bedarf immer aktiviert, z. B. bei Fitnessanwendungsfällen. Wenn für Ihre App ein Always-On erforderlich ist, prüfen Sie, ob sie Folgendes tut, wenn sich das Gerät im Inaktivmodus befindet:

    • Verringert den Prozentsatz des beleuchteten Gerätebildschirms.
    • Es werden keine Animationen angezeigt.
    • Der Bildschirminhalt wird nur während eines onAmbientUpdate()-Callbacks aktualisiert.

CPU-Nutzung minimieren

Halte dich in deiner Wear OS-App an die folgenden Prinzipien zur CPU-Nutzung:

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

Wakelocks minimieren

Vermeiden Sie in den meisten Fällen Vorgänge, die den Ruhemodus der Anwendung verhindern, z. B. Wakelocks. In Gesundheits- und Fitness-Apps benötigen Trainings mit langer Ausführungszeit beispielsweise keinen Wakelock. Die Wachzeit des Prozessors wird verwendet, wenn Callbacks von der Sensor API empfangen werden, z. B. bei der Verwendung von Health Services unter Wear OS.

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

  • Medien werden im Hintergrund wiedergegeben.
  • Verwendet WorkManager oder JobScheduler. Wenn der Job im Hintergrund ausgeführt wird, erhält das System eine Wakelock-Funktion für Sie.

Im Akkuverlauf können Sie einzelne Vorkommen von langen Wakelocks sowie Zusammenfassungen der Gesamtzahl und Dauer der zurückgehaltenen Wakelocks sehen. Prüfen Sie die Anzahl und Dauer der Wakelocks in Ihrer Anwendung und vergleichen Sie diese Informationen mit den interaktiven Nutzungsmustern Ihrer Anwendung:

  • Suchen Sie nach unerwarteten Wakelocks.
  • Wenn die Dauer länger als erwartet ist, prüfen Sie, ob die Arbeit von einer bestimmten Abhängigkeit blockiert wird, z. B. von der 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 zum Analysieren der App-Aktivitäten die Tools in den folgenden Abschnitten.

Energie-Profiler

Energy Profiler kann im Android Studio-Menü unter Ansicht > Tool-Fenster > Profiler aufgerufen werden:

  1. Untersuchen Sie den System-Trace, wenn der Bildschirm ausgeht und das Gerät in den Inaktivmodus wechselt.
  2. Achten Sie auf weitere Arbeiten und den CPU-Auslastungsgrad des Geräts.

Logo: Perfetto

Mit Perfetto können Sie einen Trace aufzeichnen und dann in Ihrer App prüfen, ob Threads funktionieren, wenn entweder der Bildschirm ausgeschaltet wird, das Gerät in den Inaktivmodus wechselt oder der Nutzer die App-Aktivität schließt.

Definieren Sie benutzerdefinierte Ereignisse, um wichtige Ereignisse Ihrer App zu kennzeichnen, einschließlich domainspezifischer Ereignisse. Bei einer Medien-App umfasst dies 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 das Timing mit der CPU- und Stromnutzung Ihrer App vergleichen.

Geplante Jobs Ihrer Anwendung analysieren

Mit geplanten Jobs können Sie mit WorkManager Hintergrundarbeiten in Ihrer Anwendung ausführen. Auch wenn einige Hintergrundarbeiten regelmäßig erfolgen müssen, sollten Sie Jobs nicht zu häufig oder für längere Zeit ausführen, da dies den Akku des Geräts belasten kann.

Verwenden Sie den Battery Historian, um die Ausführung von geplanten Jobs sowohl insgesamt (Systemstatistiken > Jobscheduler-Statistiken) als auch nach App (App-Statistiken > Geplanter Job) zu überprü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 außerdem das Diagramm des Battery Historian an und achten Sie dabei auf jeden JobScheduler-Eintrag. Wenn Sie den Mauszeiger über einen bestimmten Eintrag halten, zeigt Battery Historian 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 Ihre Anwendung ausgeführt wird, oder ob die Jobs regelmäßige Hintergrundarbeit 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 auf intelligente Weise in Batches zusammen, um die Akkuleistung zu verbessern.

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

adb shell dumpsys sensorservice

Mit diesem Befehl wird Folgendes angezeigt:

  • Aktuelle und frühere Sensorregistrierungen.
  • Sensorkonfiguration, einschließlich Batchverarbeitung, sofern festgelegt.
  • Kürzlich erhobene Daten.

Abmeldung von Sensoren testen

Testen Sie die folgenden Szenarien, um zu prüfen, ob Ihre App keine Sensordaten mehr wie erwartet abrufen kann:

  1. App durch Wischen schließen.
  2. Tippe 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

Wenn Sie die Data Layer API verwenden, verbraucht jede Übertragung etwas Energie. Wenn Sie diese API zum Senden von Daten verwenden, muss der Ruhemodus der Anwendung beendet werden, damit die Daten empfangen werden können. Seien Sie deshalb vorsichtig, wenn Sie diese API verwenden.

Im Folgenden finden Sie weitere Best Practices für die Verwendung der Data Layer API:

  • Warten Sie, bis Ihre App aktiv ist, bevor Sie mit WearableListenerService einen Listener einrichten.
  • Senden Sie Statusänderungen, anstatt schnelle Updates zu konfigurieren. Durch diese Statusänderungen kann das Wear OS-Gerät lokale Datenberechnungen durchführen, z. B. wann eine Trainingseinheit gestartet wurde.

    Übertragen Sie nur Statusänderungen, durch die Ihre UI aktualisiert wird. Wenn auf deinem Aktivitätsbildschirm beispielsweise nur „gelaufene Kilometer“ mit einer Dezimalstelle angezeigt wird, solltest du nicht jedes Mal eine Statusänderung an Wear OS senden, wenn der Nutzer ein anderes Messgerät vorwärts bewegt.

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

adb shell dumpsys activity service WearableService

Dieser Befehl führt unter anderem zu folgenden Ergebnissen:

  • RpcService:Gibt an, wie oft und welche Pfade mit MessageClient aufgerufen werden.
  • DataService: Gibt an, wie oft Datenelemente mit DataClient festgelegt werden.

Gesundheits- und Fitness-Apps

Wenn du eine Gesundheits- und Fitness-App hast, verwende Gesundheitsdienste, um die Verwendung von Sensoren durch deine App zu optimieren.

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

Kacheln und Zusatzfunktionen

Wenn deine App eine Kachel oder eine Zusatzfunktion unterstützt, beachte die folgenden 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 vermeiden, die dazu führen kann, dass das System wiederholte Aufgaben schneller plant, als der Nutzer oder die Plattform auf die für diese Arbeit erforderlichen Daten zugreifen kann.
  • Planen Sie keine Arbeiten für Ihre Kachel oder Zusatzfunktion ein, wenn der Nutzer nicht damit interagiert.
  • Verwenden Sie Offline-First-Ansätze.
  • Du kannst eine einzige Datenbank für deine Haupt-App, Kacheln und Zusatzfunktionen freigeben. Dies trägt auch dazu bei, dass die Daten auf allen UI-Oberflächen einheitlich bleiben.