Speichernutzung für das Zifferblatt optimieren

Damit die Akkulaufzeit von Wear OS-Geräten optimiert werden kann, wird die Arbeitsspeichernutzung vom System berechnet. Gemäß den [Qualitätsrichtlinien für Wear OS-Apps][1] gelten für Zifferblätter, die das Watch Face-Format verwenden, je nach aktuellem Status der Smartwatch ein bestimmter Speicherbedarf für Zifferblätter:

  • Im [Inaktivmodus][2] kann das Zifferblatt nicht mehr als 10 MB Arbeitsspeicher verbrauchen.
  • Im interaktiven Modus kann das Zifferblatt nicht mehr als 100 MB Arbeitsspeicher verbrauchen.

Das System berechnet die Arbeitsspeichernutzung eines Zifferblatts

Das System führt die folgenden Schritte aus, um die Größe eines Bildes oder einer Bitmapschrift auf einem Zifferblatt zu berechnen, das das Watch Face-Format verwendet:

  1. Dekomprimiert das Bild oder die Bitmapschriftart
  2. Prüft die Schriftart des Bildes oder der Bitmap, um festzustellen, ob sie auf eine der folgenden Arten optimiert werden kann:
    • Größe an die Anzeigegröße angepasst.
    • Zugeschnitten, um vollständig transparente Pixel zu entfernen.
    • Downsampling auf [RGB565][3]{: .external}, wenn dies ohne Verlust der Grafikqualität möglich ist.

Anhand des resultierenden Begrenzungsrahmens berechnet das System die Größe des Bilds oder der Bitmapschriftart in Byte wie folgt:

  • Für Bilder und Schriftarten mit [RGBA8888][4]{: .external}: \( 4 \times width \times height \)
  • Für Bilder und Schriftarten im RGB-565-Format: \( 2 \times width \times height \)
  • Für Bilder und Schriftarten, die die Bitmapkonfiguration ALPHA_8 verwenden, gilt:\( width \times height \)

Interaktiver Modus

Zur Berechnung der Arbeitsspeichernutzung für den interaktiven Modus berechnet das System die folgenden Summen:

  1. Die unverarbeitete Größe aller [Vektorschriftarten][5].
  2. Die geschätzte Nutzung der Standardschriftart des Systems.
  3. Die Gesamtgröße der Bilder und Bitmapschriftarten nach dem Zuschneiden, Ändern der Größe oder Neuformatierung.

Konfigurationen

Bei Zifferblättern, die [Konfigurationen][6] enthalten, versucht das System, die Gesamtgröße der in den verschiedenen Konfigurationen verwendeten Ressourcen zu berechnen. Gelegentlich gibt das System bei sehr vielen Kombinationen eine etwas zu hohe Anzahl an Ressourcen an, die gleichzeitig in den verschiedenen Konfigurationen verwendet werden.

Ambient-Modus und Ebenen

Im Inaktivmodus geht das System davon aus, dass die Smartwatch in bis zu drei Vollbildschichten gerendert wird, von denen zwei vollständig statisch sind:

  1. Alles unter den Uhrenelementen. Der größte Teil des Zifferblatts ist in dieser Ebene enthalten. Es spielt keine Rolle, wie viele Bilder zum Zeichnen dieser Ebene verwendet werden; das System zählt dies als ein Bild im Vollbildmodus.
  2. Alle Uhrenzeiger, digitale Anzeige oder Zusatzfunktionen mit Plattformbindungen, die dynamisch gerendert werden.
  3. Alle Elemente, die in der XML-Quelldatei nach den Ziffernblättern und Zusatzfunktionen aufgeführt sind.

Die meiste Arbeitsspeichernutzung im Inaktivmodus beruht in der Regel auf Bitmap-Schriftarten, insbesondere auf großen.

Methoden zur Reduzierung der Arbeitsspeichernutzung

Wenn Sie die Vorschläge in diesen Abschnitten befolgen, ist die Wahrscheinlichkeit höher, dass Sie ein Zifferblatt erstellen, dessen Arbeitsspeicherverbrauch innerhalb dieser Limits bleibt.

Bitmapschriften zuschneiden und ihre Größe anpassen

Schneiden Sie Ihre Bilder und [BitmapFont][7] Objekte zu und passen Sie die Größe an die Anzeigegröße an.

Wenn Wear OS ein Zifferblatt zeichnet, werden alle Bilder dekomprimiert. Ein größtenteils leeres Bild im Vollbildmodus verbraucht unter Umständen 3 KB auf der Festplatte. Wird es jedoch auf einem Bildschirm mit 450 × 450 Pixeln angezeigt, dekomprimiert das System das Bild und erhöht den Arbeitsspeicher auf mindestens 750 KB.

Einheitliche Bitmapschrifthöhen verwenden

Bei Verwendung eines BitmapFont sollten alle Bilder für ein Zeichen dieselbe Höhe haben. Ebenso sollten alle Bilder für Wörter dieselbe Höhe haben.

Einheitliche Frame-Größen in Animationen verwenden

Anstatt ein Bild über ein Zifferblatt zu verschieben, aktualisieren Sie die Elemente im Bild und halten den Begrenzungsrahmen an derselben Position relativ zum Zifferblatt. Wenn Sie beispielsweise einen Kreis auf Ihrem Zifferblatt animieren möchten, sollten Sie die Farbe eines Kreises ändern, anstatt ihn über das Zifferblatt zu rollen.

Mit dieser Technik wird die Größe des Begrenzungsrahmens reduziert, den das System für die Animation berechnet.

Bilder deduplizieren

Wenn auf Ihrem Zifferblatt mehrere Kopien desselben Bildes angezeigt werden, laden Sie nur eine Kopie dieses Bildes in den Speicher und erstellen Sie mehrere Verweise auf dieses eine Bild.

Fortschritt mithilfe von Bögen anzeigen

Verwenden Sie keine 60 separaten Bilder, um eine Fortschrittsanzeige zu emulieren, die nach einer Minute oder nach einer Stunde abgeschlossen wird. Erstellen Sie stattdessen ein [Arc][8]-Objekt, das einen Ausdruck enthält, der seine Länge steuert, wie im folgenden Code-Snippet gezeigt:

<PartDraw angle="0" width="400" height="400" name="ProgressBar"
          pivotX="0.5" pivotY="0.5 x="40" y="40">
    <Arc centerX="200" centerY="200" width="400" height="400"
         startAngle="0" endAngle="360">
        <!-- Completes a "progress loop" every minute. -->
        <Transform target="endAngle"
                   value="0 + (clamp([SECOND], 0, 60) - 0) * 6" />
        <Stroke cap="ROUND" color="#123456" thickness="10" />
    </Arc>
</PartDraw>

Wenn Sie eine nicht durchgehende Linie darstellen möchten, um beispielsweise einen Look für eine digitale Smartwatch im Retrostil zu erhalten, verwenden Sie entweder eine Bindestrich-Eigenschaft für ein [Stroke][9]-Objekt oder ein Bild-Overlay mit halbtransparenter Maske.

Uhrzeiger und Zusatzfunktionen am Ende der Quelldatei platzieren

XML-Knoten werden in der Reihenfolge gezeichnet, in der sie in der XML-Quelldatei aufgeführt sind. Indem die Uhrzeiger und Zusatzfunktionen an das Ende der Datei angehängt werden, entfernt das System eine ganze Schicht aus der Berechnung des Inaktivmodus-Arbeitsspeichers.

Arbeitsspeichernutzung deines Zifferblatts bewerten

Zum Messen der Arbeitsspeichernutzung Ihres Zifferblatts können Sie das Tool „Arbeitsspeicher-Fußabdruck-Evaluator“ verwenden, das im Repository [watchface][10] auf GitHub verfügbar ist.

  • Hinweis: Der Linktext wird angezeigt, wenn JavaScript deaktiviert ist.
  • Bogen
  • Linie
  • Rechteck