Speichernutzung für das Zifferblatt optimieren

Um die Akkulaufzeit von Wear OS-Geräten zu optimieren, die Arbeitsspeichernutzung berechnet. Im Rahmen der Qualitätsrichtlinien für Wear OS-Apps Richtlinien einhalten, gibt es bei Zifferblättern, die das Watch Face-Format verwenden, Arbeitsspeichermenge, die sie je nach aktuellem Status der Uhr verbrauchen können:

  • Im Inaktivmodus kann das Zifferblatt nicht mehr als 10 MB an Daten abrufen. zu speichern.
  • Im interaktiven Modus kann das Zifferblatt nicht mehr als 100 MB an Daten zu speichern.

Das System berechnet die Arbeitsspeichernutzung eines Zifferblatts

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

  1. Dekomprimiert das Bild oder die Bitmapschriftart
  2. Prüft das Bild oder die Bitmapschriftart, um festzustellen, ob sie in einer der folgenden auf folgende Arten:
    • Größe an die Anzeigegröße angepasst.
    • Zugeschnitten, um vollständig transparente Pixel zu entfernen.
    • Downsampling auf RGB565, falls dies auch ohne und die Darstellungsqualität.

Anhand des resultierenden Begrenzungsrahmens wird die Größe des Bildes berechnet. Bitmapschriftart in Byte als eine der folgenden Optionen:

  • Für Bilder und Schriftarten mit RGBA8888: \( 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: \( width \times height \)

Interaktiver Modus

Bei der Berechnung der Arbeitsspeichernutzung für den interaktiven Modus berechnet das System den Summe von Folgendem:

  1. Die unverarbeitete Größe aller Vektorschriftarten.
  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 eine Neuformatierung angewendet wurde.

Konfigurationen

Bei Zifferblättern, die Konfigurationen enthalten, versucht das System, die Gesamtgröße der in den verschiedenen Konfigurationen verwendeten Ressourcen. Bei sehr vielen Kombinationen kann das System wie viele Ressourcen gleichzeitig im gesamten mit unterschiedlichen Konfigurationen.

Ambient-Modus und Ebenen

Im Inaktivmodus nimmt das System an, dass die Uhr mit bis zu drei Vollbild-Layers, von denen zwei vollständig statisch sind:

  1. Alles unter den Uhrenelementen. Der größte Teil des Zifferblattes ist in diese Ebene eingefügt. Dabei spielt es keine Rolle, wie viele Bilder diese Ebene zeichnen; zählt das System sie als Vollbild.
  2. Alle Uhrenhände, Digitaldisplays oder Zusatzfunktionen mit Plattformbindung die dynamisch gerendert werden.
  3. Alle Elemente, die nach den Zeigern und Zusatzfunktionen der Uhr in der XML-Quelldatei

Die meiste Arbeitsspeichernutzung im Inaktivmodus beruht auf Bitmapschriften, die sehr groß sind.

Methoden zur Reduzierung der Arbeitsspeichernutzung

Wenn Sie die Vorschläge in diesen Abschnitten umsetzen, ist es wahrscheinlicher, dass Sie ein Zifferblatt, dessen Arbeitsspeicherverbrauch innerhalb dieser Limits bleibt.

Bitmapschriftarten zuschneiden und ihre Größe anpassen

Schneiden Sie Bilder und Objekte vom Typ BitmapFont zu und passen Sie die Größe an ihre Anzeigegröße.

Wenn Wear OS ein Zifferblatt zeichnet, werden alle Bilder dekomprimiert. Vollbild ein weitgehend leeres Image verbraucht unter Umständen 3 KB auf dem Laufwerk, aber wenn es angezeigt wird, Auf einem Bildschirm mit 450 x 450 Pixeln dekomprimiert das System das Bild, sodass das Bild auf mindestens 750 KB groß ist.

Einheitliche Bitmapschrifthöhen verwenden

Wenn du ein BitmapFont verwendest, sollten alle Bilder für ein Zeichen dasselbe haben Höhe. 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 in der Bild und halten den Begrenzungsrahmen relativ zum Zifferblatt an derselben Position. Wenn Sie beispielsweise einen Kreis auf Ihrem Zifferblatt Ändern der Farbe eines Kreises, anstatt den Kreis über die Uhr zu drehen Gesicht.

Mit diesem Verfahren wird die Größe des vom System berechneten Begrenzungsrahmens reduziert. für die Animation.

Bilder deduplizieren

Wenn auf dem Zifferblatt mehrere Kopien desselben Bildes angezeigt werden, füge nur eine davon ein Kopie dieses Bildes in Ihrem Ressourcenverzeichnis und verweisen Sie mehrfach darauf Mal.

Fortschritt mithilfe von Bögen anzeigen

Um eine Fortschrittsanzeige zu emulieren, die nach einer Minute oder nach einer Stunde abgeschlossen wird, 60 separate Bilder verwenden. Erstellen Sie stattdessen ein Arc-Objekt, das ein Ausdruck, 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>

Zur Darstellung einer durchgehenden Linie, z. B. für eine digitale Retro-Uhr Stildesign verwenden, verwenden Sie entweder eine Bindestrich-Eigenschaft für ein Stroke-Objekt oder 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. Von die Zeiger und Zusatzfunktionen an das Ende der Datei, entfernt eine ganze Ebene aus der Berechnung des Inaktivmodus-Speichers.

Arbeitsspeichernutzung deines Zifferblatts bewerten

Anhand des Arbeitsspeicher-Fußabdrucks kannst du die Arbeitsspeichernutzung deines Zifferblatts messen Evaluator-Tool, verfügbar im watchface-Repository auf GitHub.

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