Ottimizza l'utilizzo della memoria per il quadrante

Wear OS migliora la durata della batteria monitorando l'utilizzo della memoria. I quadranti che utilizzano Watch Face Format hanno limiti di memoria, come indicato nelle norme sulla qualità delle app per Wear OS:

  • Modalità Ambient: utilizzo massimo di memoria di 10 MB.
  • Modalità interattiva: utilizzo massimo di memoria di 100 MB.

Calcolo dell'utilizzo della memoria

Per calcolare l'utilizzo della memoria per un'immagine o un carattere bitmap in un quadrante utilizzando il formato Watch Face, il sistema esegue le seguenti operazioni:

  1. Decomprimere l'immagine o il carattere.
  2. Verifica se si applicano le seguenti ottimizzazioni:
    • Ridimensionamento per adattarsi meglio allo schermo
    • Ritaglio di pixel trasparenti
    • Riduzione del campionamento a RGB565, senza perdita di fedeltà

In base al riquadro delimitante risultante, le dimensioni vengono calcolate come segue:

  • Per immagini e caratteri che utilizzano RGBA8888: 4 x larghezza x altezza
  • Per immagini e caratteri che utilizzano RGB565: 2 x larghezza x altezza
  • Per le immagini e i caratteri che utilizzano la configurazione bitmap ALPHA_8: larghezza x altezza

Modalità interattiva

Per calcolare l'utilizzo della memoria per la modalità interattiva, il sistema somma i seguenti valori:

  1. Le dimensioni non elaborate di eventuali caratteri vettoriali
  2. L'utilizzo stimato del carattere predefinito di sistema
  3. Le dimensioni totali delle immagini e dei caratteri bitmap dopo l'applicazione di ritaglio, ridimensionamento e riformattazione

Configurations (Configurazioni)

Per i quadranti con configurazioni, il sistema tenta di calcolare le dimensioni totali delle risorse del quadrante in diverse configurazioni. Se il numero di combinazioni è molto elevato, il sistema potrebbe sovrastimare il numero di risorse utilizzate contemporaneamente.

Modalità Ambient e livelli

Il sistema presuppone che la modalità Ambient utilizzi fino a tre livelli a schermo intero, di cui due statici. I livelli includono:

  1. Lo sfondo del quadrante. Il sistema lo tratta come un'unica immagine, indipendentemente dal numero di immagini che compongono lo sfondo.
  2. Parti in movimento come lancette, display digitali o elementi dinamici.
  3. Elementi rimanenti del file XML di origine.

I caratteri bitmap di grandi dimensioni spesso utilizzano la maggior parte della memoria in modalità Ambient.

Metodi per ridurre l'utilizzo della memoria

Utilizza le seguenti ottimizzazioni per ridurre l'utilizzo della memoria.

Ritagliare e ridimensionare i caratteri bitmap

Ritaglia le immagini e gli oggetti BitmapFont in modo che corrispondano alle dimensioni del display.

Wear OS disegna i quadranti con tutte le immagini decompresse. Un'immagine a schermo intero prevalentemente vuota potrebbe occupare 3 KB su disco, ma 750 KB o più su uno schermo di 450 x 450 pixel.

Utilizza altezze dei caratteri bitmap coerenti

Quando utilizzi un BitmapFont, assicurati che tutte le immagini di un carattere abbiano la stessa altezza. Allo stesso modo, assicurati che tutte le immagini delle parole abbiano la stessa altezza.

Utilizza dimensioni dei fotogrammi coerenti nelle animazioni

Anziché spostare un'immagine su un quadrante, aggiorna gli elementi dell'immagine e mantieni fissa la posizione della casella delimitante. Ad esempio, per animare un cerchio sul quadrante, cambiane il colore anziché ruotarlo.

Questa tecnica riduce le dimensioni del riquadro di delimitazione calcolato dell'animazione.

Deduplicare le immagini

Per visualizzare un'immagine più volte, includi una sola risorsa immagine e fai riferimento a essa più volte.

Mostrare l'avanzamento utilizzando archi

Per simulare il completamento di una barra di avanzamento dopo 1 minuto o 1 ora, non utilizzare 60 immagini. Utilizza un oggetto Arc con un'espressione che ne controlla la durata, come mostrato di seguito:

<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>

Per visualizzare una linea non continua, ad esempio per ottenere un look stile orologio digitale retrò, utilizza una proprietà trattini per un oggetto Stroke o un overlay di immagine maschera semitrasparente.

Posiziona le lancette e le complicazioni dello smartwatch alla fine del file di origine

I nodi XML vengono disegnati nell'ordine elencato nel file XML di origine. Posizionando le lancette e le complicazioni in fondo, consenti al sistema di eliminare un intero livello dal calcolo della memoria in modalità Ambient.

Valutare l'utilizzo della memoria del quadrante

Per misurare l'utilizzo della memoria del quadrante, utilizza lo strumento di valutazione dell'impronta in memoria, disponibile nel repository watchface su GitHub.

  • Nota: il testo del link viene visualizzato quando JavaScript è disattivato
  • Arco
  • Linea
  • Rettangolo