Um die bestmögliche Akkulaufzeit von Wear OS-Geräten zu erzielen, führt das System eine Berechnung der Speichernutzung durch. Gemäß den Qualitätsrichtlinien für Wear OS-Apps 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 kann das Zifferblatt nicht mehr als 10 MB Arbeitsspeicher verbrauchen.
- Im interaktiven Modus darf das Zifferblatt nicht mehr als 100 MB Arbeitsspeicher verbrauchen.
Das System berechnet die Arbeitsspeichernutzung eines Zifferblatts
Um die Größe eines Bilds oder Bitmap-Schriftzugs in einem Zifferblatt zu berechnen, das das Zifferblattformat verwendet, führt das System die folgenden Schritte aus:
- Entpackt das Bild oder die Bitmap-Schriftart.
- Prüft, ob das Bild oder die Bitmap-Schrift auf folgende Weise optimiert werden kann:
- Die Größe wurde angepasst, damit sie besser zur Displaygröße passt.
- Zugeschnitten, um vollständig transparente Pixel zu entfernen.
- Wird auf RGB565 herunterskaliert, wenn dies ohne Qualitätsverlust möglich ist.
Anhand des resultierenden Begrenzungsrahmens berechnet das System die Größe des Bilds oder Bitmap-Fonts in Byte auf eine der folgenden Arten:
- Für Bilder und Schriftarten, die RGBA8888 verwenden: \( 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 Bitmap-Konfiguration ALPHA_8 verwenden: \( width \times height \)
Interaktiver Modus
Bei der Berechnung der Arbeitsspeichernutzung für den interaktiven Modus berechnet das System die folgenden Summen:
- Die unbehandelte Größe aller Vektorschriften.
- Die geschätzte Verwendung der Standardschriftart des Systems.
- Die Gesamtgröße der Bilder und Bitmap-Schriftarten nach dem Zuschneiden, Ändern der Größe oder Neuformatieren.
Konfigurationen
Bei Zifferblättern, die Konfigurationen enthalten, versucht das System, die Gesamtgröße der in den verschiedenen Konfigurationen verwendeten Ressourcen zu berechnen. Bei sehr vielen Kombinationen überschätzt das System gelegentlich leicht, wie viele Ressourcen gleichzeitig in den verschiedenen Konfigurationen verwendet werden.
Inaktivmodus und Ebenen
Im Modus „Inaktivität“ geht das System davon aus, dass die Smartwatch mit bis zu drei Vollbildebenen gerendert wird, von denen zwei vollständig statisch sind:
- Alles, was sich unter den Smartwatch-Elementen befindet. 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 sie als ein Vollbildbild.
- Alle Zeiger, das digitale Display oder Zusatzfunktionen mit Plattformbindungen, die dynamisch gerendert werden.
- Alle Elemente, die in der Quell-XML-Datei nach den Zeigern und Komplikationen 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 den Vorschlägen in diesen Abschnitten folgen, ist die Wahrscheinlichkeit höher, dass Sie ein Zifferblatt erstellen, dessen Arbeitsspeicherverbrauch innerhalb dieser Limits bleibt.
Bitmap-Schriftarten zuschneiden und ihre Größe anpassen
Zuschneiden Sie Ihre Bilder und BitmapFont
-Objekte und passen Sie die Größe an die Anzeige an.
Wenn Wear OS ein Zifferblatt zeichnet, werden alle Bilder dekomprimiert. Ein Vollbildbild, das größtenteils leer ist, kann 3 KB auf der Festplatte belegen. Wenn es jedoch auf einem Bildschirm mit 450 × 450 Pixeln angezeigt wird, dekomprimiert das System das Bild und erhöht die Größe des Bildes im 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 Framegrößen in Animationen verwenden
Anstatt ein Bild auf einem Zifferblatt zu verschieben, aktualisieren Sie die Elemente im Bild und lassen Sie den Begrenzungsrahmen an derselben Stelle 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.
Dadurch wird die Größe des Begrenzungsrahmens reduziert, den das System für die Animation berechnet.
Bilder deduplizieren
Wenn Ihr Zifferblatt mehrere Kopien desselben Bilds enthält, fügen Sie nur eine Kopie dieses Bilds in Ihr Ressourcenverzeichnis ein und verweisen Sie mehrmals darauf.
Fortschritt mithilfe von Kreisbögen anzeigen
Verwenden Sie nicht 60 separate Bilder, um eine Fortschrittsanzeige zu emulieren, die nach einer Minute oder einer Stunde abgeschlossen ist. Erstellen Sie stattdessen ein Arc
-Objekt mit einem Ausdruck, der die 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 unterbrochene Linie anzeigen möchten, z. B. um einen Retro-Look im Stil einer digitalen Uhr zu erzielen, verwenden Sie entweder eine Stricheigenschaft für ein Stroke
-Objekt oder ein halbtransparentes Maskierungsbild-Overlay.
Zeiger 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 Ihres Zifferblatts bewerten
Zum Messen der Arbeitsspeichernutzung Ihres Zifferblatts können Sie das Tool „Arbeitsspeicher-Fußabdruck-Evaluator“ verwenden, das im Repository watchface
auf GitHub verfügbar ist.