Wear OS optimiert die Akkulaufzeit, indem die Speichernutzung im Blick behalten wird. Für Zifferblätter, die das Watch Face-Format verwenden, gelten gemäß den Qualitätsrichtlinien für Wear OS-Apps folgende Arbeitsspeicherlimits:
- Ambient-Modus: Maximale Speichernutzung von 10 MB.
- Interaktiver Modus: maximal 100 MB Arbeitsspeicher.
Berechnung der Speichernutzung
Um die Arbeitsspeichernutzung für ein Bild oder eine Bitmap-Schriftart auf einem Zifferblatt mit dem Watch Face-Format zu berechnen, führt das System die folgenden Schritte aus:
- Entpacken Sie das Bild oder die Schriftart.
- Prüfen Sie, ob die folgenden Optimierungen zutreffen:
- Größenanpassung für eine bessere Darstellung auf dem Bildschirm
- Transparente Pixel zuschneiden
- Downsampling auf RGB565 ohne Verlust der Originaltreue
Anhand des resultierenden Rechtecks wird die Größe so berechnet:
- Für Bilder und Schriftarten mit RGBA8888: 4 × Breite × Höhe
- Für Bilder und Schriftarten mit RGB565: 2 × Breite × Höhe
- Für Bilder und Schriftarten mit der Bitmap-Konfiguration ALPHA_8: Breite × Höhe
Interaktiver Modus
Um die Arbeitsspeichernutzung für den interaktiven Modus zu berechnen, summiert das System die folgenden Werte:
- Die Größe aller Vektorschriftarten vor der Verarbeitung
- Die geschätzte Verwendung der Standardschriftart des Systems
- Die Gesamtgröße der Bilder und Bitmap-Schriftarten nach dem Zuschneiden, Anpassen der Größe und Neuformatieren
Konfigurationen
Bei Zifferblättern mit Konfigurationen versucht das System, die Gesamtgröße der Zifferblattressourcen für die verschiedenen Konfigurationen zu berechnen. Wenn die Anzahl der Kombinationen sehr hoch ist, kann das System die Anzahl der gleichzeitig verwendeten Ressourcen überschätzen.
Inaktivmodus und Ebenen
Das System geht davon aus, dass im Inaktivmodus bis zu drei Vollbildebenen verwendet werden, von denen zwei statisch sind. Die Ebenen umfassen:
- Der Hintergrund des Zifferblatts. Das System behandelt dies als ein Bild, unabhängig davon, aus wie vielen Bildern der Hintergrund besteht.
- Bewegliche Teile wie Zeiger, digitale Displays oder dynamische Elemente.
- Verbleibende Elemente aus der XML-Quelldatei.
Große Bitmap-Schriftarten benötigen im Ambient-Modus oft den meisten Arbeitsspeicher.
Methoden zur Reduzierung der Arbeitsspeichernutzung
Mit den folgenden Optimierungen können Sie die Arbeitsspeichernutzung reduzieren.
Bitmap-Schriftarten zuschneiden und ihre Größe anpassen
Schneiden Sie Ihre Bilder und BitmapFont-Objekte so zu, dass sie der Anzeigegröße entsprechen.
Wear OS rendert Zifferblätter mit allen dekomprimierten Bildern. Ein größtenteils leeres Vollbild kann auf der Festplatte 3 KB belegen, auf einem 450‑Pixel × 450‑Pixel großen Bildschirm jedoch 750 KB oder mehr.
Einheitliche Bitmap-Schrifthöhen verwenden
Wenn Sie eine BitmapFont verwenden, müssen alle Bilder für eine Figur dieselbe Höhe haben. Achten Sie auch darauf, dass alle Bilder für Wörter dieselbe Höhe haben.
Einheitliche Framegrößen in Animationen verwenden
Anstatt ein Bild über ein Zifferblatt zu bewegen, sollten Sie die Elemente im Bild aktualisieren und die Position des Begrenzungsrahmens beibehalten. Wenn Sie beispielsweise einen Kreis auf Ihrem Zifferblatt animieren möchten, ändern Sie seine Farbe, anstatt ihn zu drehen.
Durch diese Technik wird die Größe des berechneten Begrenzungsrahmens der Animation verringert.
Bilder deduplizieren
Wenn Sie ein Bild mehrmals anzeigen möchten, fügen Sie nur eine Bildressource ein und verweisen Sie mehrmals darauf.
Fortschritt mit Kreisbögen darstellen
Wenn Sie simulieren möchten, dass ein Fortschrittsbalken nach einer Minute oder einer Stunde fertig ist, verwenden Sie nicht 60 Bilder. Verwenden Sie ein Arc-Objekt mit einem Ausdruck, der seine Länge steuert, wie hier gezeigt:
<PartDraw angle="0" width="400" height="400" name="ProgressBar" pivotX="0.5" pivotY="0.5" x="25" y="25"> <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="#654456" thickness="10" /> </Arc> </PartDraw>
Wenn Sie eine nicht durchgehende Linie anzeigen möchten, z. B. um einen Retro-Digitaluhr-Look zu erzielen, verwenden Sie eine Stricheigenschaft für ein Stroke-Objekt oder ein halbtransparentes Maskenbild-Overlay.
Zeiger und Zusatzfunktionen am Ende der Quelldatei platzieren
XML-Knoten werden in der Reihenfolge gezeichnet, in der sie im Quell-XML aufgeführt sind. Wenn Sie Zeiger und Komplikationen ans Ende setzen, kann das System eine ganze Ebene aus der Speicherberechnung für den Inaktivmodus entfernen.
Arbeitsspeichernutzung Ihres Zifferblatts bewerten
Verwende das Tool zur Bewertung des Arbeitsspeicherbedarfs, das im Repository watchface auf GitHub verfügbar ist, um den Arbeitsspeicherverbrauch deines Zifferblatts zu messen.