Speichernutzung für das Zifferblatt optimieren

Wear OS verbessert die Akkulaufzeit, indem die Arbeitsspeichernutzung erfasst wird. Zifferblätter im Watch Face-Format unterliegen gemäß den Qualitätsrichtlinien für Wear OS-Apps den folgenden Arbeitsspeicherlimits:

  • Im Bildschirmschoner: Maximale Speichernutzung von 10 MB.
  • Interaktiver Modus: Maximaler Arbeitsspeicherverbrauch: 100 MB.

Berechnung der Arbeitsspeichernutzung

So berechnet das System die Arbeitsspeichernutzung für ein Bild oder einen Bitmap-Schriftschnitt in einem Zifferblatt im Watch Face-Format:

  1. Entpacken Sie das Bild oder die Schriftart.
  2. Prüfen Sie, ob die folgenden Optimierungen zutreffend sind:
    • Größe anpassen, damit die Inhalte besser auf dem Bildschirm angezeigt werden
    • Transparente Pixel zuschneiden
    • Downsampling auf RGB565 ohne Qualitätsverlust

Basierend auf dem resultierenden Begrenzungsrahmen 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

Zur Berechnung der Arbeitsspeichernutzung für den interaktiven Modus summiert das System die folgenden Werte:

  1. Die unbehandelte Größe aller Vektorschriften
  2. Die geschätzte Verwendung der Standardschriftart des Systems
  3. Die Gesamtgröße der Bilder und Bitmap-Schriftarten nach dem Zuschneiden, Ändern der Größe und Neuformatieren

Konfigurationen

Bei Zifferblättern mit Konfigurationen versucht das System, die Gesamtgröße der Zifferblattressourcen für verschiedene 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 Bildschirmschonermodus bis zu drei Vollbildebenen verwendet werden, von denen zwei statisch sind. Die Ebenen umfassen:

  1. Der Hintergrund des Zifferblatts. Das System behandelt dies als ein Bild, unabhängig davon, aus wie vielen Bildern der Hintergrund besteht.
  2. Bewegliche Teile wie Zeiger, digitale Displays oder dynamische Elemente
  3. Übrige Elemente aus der Quell-XML-Datei.

Große Bitmap-Schriftarten verbrauchen im Bildschirmschonermodus 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

Zuschneiden Sie Ihre Bilder und BitmapFont-Objekte so, dass sie zur Bildschirmgröße passen.

Wear OS zeigt Zifferblätter mit allen dekomprimierten Bildern an. Ein größtenteils leeres Vollbildbild belegt auf dem Laufwerk möglicherweise 3 KB, auf einem Bildschirm mit 450 × 450 Pixeln jedoch mindestens 750 KB.

Einheitliche Bitmap-Schrifthöhen verwenden

Achten Sie bei der Verwendung einer BitmapFont darauf, dass alle Bilder für ein Zeichen dieselbe Höhe haben. Achten Sie außerdem darauf, dass 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 die Position des Begrenzungsrahmens unverändert. Wenn Sie beispielsweise einen Kreis auf Ihrem Zifferblatt animieren möchten, ändern Sie seine Farbe, anstatt ihn zu drehen.

Dadurch wird der berechnete Begrenzungsrahmen der Animation verkleinert.

Bilder deduplizieren

Wenn Sie ein Bild mehrmals anzeigen lassen möchten, fügen Sie nur eine Bildressource ein und verweisen Sie mehrmals darauf.

Fortschritt mithilfe von Kreisbögen anzeigen

Wenn Sie eine Fortschrittsanzeige simulieren möchten, die nach einer Minute oder einer Stunde endet, verwenden Sie nicht 60 Bilder. Verwenden Sie ein Arc-Objekt mit einem Ausdruck, der die Länge steuert, wie hier 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 zu erzielen, verwenden Sie ein Strichattribut 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 Quell-XML-Datei aufgeführt sind. Wenn Sie Zeiger und Zusatzfunktionen am Ende platzieren, kann das System eine ganze Ebene aus der Speicherberechnung für den Ruhemodus entfernen.

Arbeitsspeichernutzung Ihres Zifferblatts prüfen

Verwenden Sie zum Messen der Arbeitsspeichernutzung Ihres Zifferblatts das Tool zur Bewertung des Arbeitsspeicherbedarfs, das im watchface-Repository auf GitHub verfügbar ist.

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