Zifferblätter optimieren

Ein Wear OS-Zifferblatt wird rund um die Uhr ausgeführt und muss daher effizient genutzt werden.

Optimieren Sie die Leistung des Zifferblatts so weit wie möglich. Auf dieser Seite finden Sie Best Practices für die allgemeine Optimierung des Zifferblatts sowie Best Practices für Animationen und Bilder.

Grundlegende Optimierung

Dieser Abschnitt enthält Best Practices zur Verbesserung der Gesamteffizienz deines Zifferblatts.

Farbe und Helligkeit des Zifferblatts

Wenn Sie dunkle Farben für Ihr Zifferblatt verwenden, wird weniger Energie auf der Smartwatch des Nutzers verbraucht. Im Folgenden findest du Empfehlungen zum Festlegen des Hintergrunds des Zifferblatts, um den Akkuverbrauch des Zifferblatts zu optimieren:

  • Farbe:Verwenden Sie nach Möglichkeit einen schwarzen Hintergrund.
  • Helligkeit:Wenn kein schwarzer Hintergrund möglich ist, sollte die Helligkeit der Hintergrundfarbe auf einer Skala von Farbton, Sättigung, Wert (HSV) oder Farbton, Sättigung, Helligkeit (HSB) bei oder unter 25% liegen. Wenn Sie beispielsweise die Klasse Color verwenden, um eine Hintergrundfarbe festzulegen, die mit der HSV-Skala definiert wird, verwenden Sie 25 oder weniger für die Werteinstellung, mit der die Helligkeit gesteuert wird.

Dynamische Funktionen zur Interaktion mit dem Smartphone nutzen

Wenn für ein Zifferblatt ein Vorgang auf dem Smartphone erforderlich ist, führen Sie den Code nur aus, wenn das Zifferblatt aktiv ist. Die empfohlene Methode, um die App auf dem Smartphone erkennen zu können, dass das entsprechende Zifferblatt aktiv ist, ist die CapabilityClient API.

Energieverbrauch überwachen

Mit der Wear OS-Companion-App können Entwickler und Nutzer sehen, wie viel Akkuleistung von verschiedenen Prozessen auf dem Wearable-Gerät verbraucht wird. Um dies zu sehen, gehen Sie zu Einstellungen > Smartwatch-Akku.

Zifferblätter für die Verschlüsselung registrieren

Android 7.0 und höher unterstützen eine dateibasierte Verschlüsselung und ermöglichen die Ausführung verschlüsselungsfähiger Anwendungen, bevor der Nutzer den Entschlüsselungs-Sicherheitscode beim Start eingegeben hat. Dadurch kann der Übergang von der Startanimation zum Zifferblatt um bis zu 30 Sekunden verkürzt werden.

Fügen Sie dem Zifferblatt-Manifest android:directBootAware="true" hinzu, um einen schnelleren Start zu ermöglichen.

Hinweis: Verwenden Sie diese Funktion bei Zifferblättern, die keinen mit Anmeldedaten verschlüsselten Speicher nutzen.

Best Practices für Animationen

Die Best Practices in diesem Abschnitt helfen Ihnen, den Stromverbrauch für Animationen zu reduzieren.

Framerate von Animationen reduzieren

Animationen sind oft rechenintensiv und verbrauchen einen erheblichen Stromverbrauch. Die meisten Animationen sehen mit 30 Bildern pro Sekunde fließend aus. Sie sollten daher Ihre Animationen möglichst nicht mit einer höheren Framerate ausführen. Stattdessen kannst du dynamische Framerates verwenden. Weitere Informationen findest du unter Beispiel für ein Canvas-Zifferblatt.

CPU zwischen Animationen in den Ruhezustand wechseln

Verwenden Sie Animationen sparsam, um die Akkulaufzeit zu maximieren. Sogar ein blinkender Doppelpunkt verbraucht mit jedem Blinzeln.

Animationen und kleine Änderungen am Inhalt des Zifferblatts aktivieren die CPU. Lassen Sie die CPU zwischen den Animationen in den Ruhemodus wechseln, indem Sie zum Beispiel im interaktiven Modus kurze Animationsserien pro Sekunde verwenden und die CPU bis zur nächsten Sekunde in den Ruhemodus übergehen lassen. Wenn die CPU häufig in den Ruhemodus versetzt wird, kann sich dies negativ auf den Stromverbrauch auswirken.

Best Practices für Bilder

Die Best Practices in diesem Abschnitt helfen Ihnen, den Stromverbrauch für Bilder zu reduzieren.

Größe der Bitmap-Assets reduzieren

Viele Zifferblätter bestehen aus einem Hintergrundbild und anderen Grafikinhalten, die umgewandelt und über das Hintergrundbild gelegt werden, z. B. Uhrzeiger und andere Elemente, die sich im Laufe der Zeit bewegen. Je größer diese Grafikinhalte sind, desto rechenintensiver ist die Transformation. Normalerweise werden diese Grafikelemente innerhalb der Methode Render.CanvasRenderer.render() jedes Mal gedreht und manchmal skaliert, wenn das System das Zifferblatt neu zeichnet, wie unter Zifferblatt zeichnen beschrieben.

Abbildung 1: Schneide die Uhranzeige zu, um zusätzliche Pixel zu entfernen.

Wenn Sie die Größe der Bitmap-Assets verringern, wird die Leistung der Animationen verbessert und es wird Energie gespart. Befolgen Sie diese Tipps, um die Leistung Ihres Zifferblatts zu verbessern:

  • Verwenden Sie keine Grafikelemente, die größer als erforderlich sind.
  • Entfernen Sie überschüssige transparente Pixel an den Rändern.

Zum Beispiel kann die Größe des Uhrzeigerbildes auf der linken Seite in Abbildung 1 um 97% reduziert werden, indem die zusätzlichen transparenten Pixel entfernt werden, wie auf der rechten Seite der Abbildung dargestellt.

Bitmap-Assets kombinieren

Wenn Sie Bitmaps haben, die häufig zusammen gezeichnet werden, sollten Sie sie in einem einzigen Grafikelement kombinieren. Beispielsweise können Sie das Hintergrundbild im interaktiven Modus häufig mit den Häkchen kombinieren, um zu vermeiden, dass jedes Mal, wenn das System das Zifferblatt neu zeichnet, zwei Vollbild-Bitmaps gezeichnet werden.

Kantenglättung beim Zeichnen skalierter Bitmaps deaktivieren

Wenn Sie mit der Methode Canvas.drawBitmap() eine skalierte Bitmap auf dem Canvas-Objekt zeichnen, können Sie eine Paint-Instanz bereitstellen, um mehrere Optionen zu konfigurieren. Sie können die Leistung verbessern, wenn Sie Anti-Aliasing mit der Methode setAntiAlias() deaktivieren, da diese Option keine Auswirkungen auf Bitmaps hat.

Abbildung 2: Beispiel für deaktivierte (links) und aktivierte (rechts) Bitmap-Filterung

Bitmapfilter verwenden

Aktivieren Sie für Bitmap-Assets, die Sie über anderen Elementen zeichnen, die Bitmap-Filterung für dieselbe Paint-Instanz mithilfe der Methode setFilterBitmap(). Abbildung 2 zeigt eine vergrößerte Ansicht eines Uhrzeigers mit und ohne Bitmapfilterung.

Hinweis:Wenn der Inaktivmodus aktiv ist, deaktiviere die Bitmapfilterung. Im Low-Bit-Inaktivmodus rendert das System die Farben im Bild nicht zuverlässig, damit die Bitmapfilterung erfolgreich verarbeitet werden kann.

Verschieben Sie teure Vorgänge aus der Zeichenmethode

Das System ruft die Methode Render.CanvasRenderer.render() jedes Mal auf, wenn das Zifferblatt neu gezeichnet wird. Zur Leistungsverbesserung solltest du nur Vorgänge innerhalb dieser Methode aufnehmen, die für die Aktualisierung des Zifferblatts unbedingt erforderlich sind.

Vermeiden Sie nach Möglichkeit die folgenden Vorgänge innerhalb der Methode Render.CanvasRenderer.render():

  • Bilder und andere Ressourcen werden geladen
  • Größe von Bildern ändern
  • Objekte werden zugewiesen
  • Berechnungen, deren Ergebnisse sich zwischen den Frames nicht ändern

Mit dem CPU-Profiler können Sie die Leistung Ihres Zifferblatts analysieren. Achte insbesondere darauf, dass die Ausführungszeit für deine Render.CanvasRenderer.render()-Implementierung bei allen Aufrufen kurz und konsistent ist. Weitere Informationen finden Sie unter CPU-Aktivität mit CPU Profiler prüfen.

Die Beispiel-App für das Zifferblatt zeigt die Best Practices zum Konfigurieren eines Zifferblatts.