Per garantire la migliore durata possibile della batteria ai dispositivi Wear OS, il sistema esegue un calcolo dell'utilizzo della memoria. Nell'ambito delle norme sulla qualità delle app per Wear OS, i quadranti che utilizzano il formato Watch Face hanno limiti alla quantità di memoria che possono consumare, a seconda dello stato corrente dello smartwatch:
- In modalità Ambient, il quadrante non può consumare più di 10 MB di memoria.
- In modalità interattiva, il quadrante non può consumare più di 100 MB di memoria.
Il sistema calcola l'utilizzo della memoria di un quadrante
Per calcolare le dimensioni occupate da un'immagine o un carattere bitmap all'interno di un quadrante che utilizza il formato del quadrante, il sistema completa i seguenti passaggi:
- Decomprime il carattere bitmap o dell'immagine.
- Esamina il carattere bitmap o l'immagine per verificare se può essere ottimizzato in uno dei seguenti modi:
- Le dimensioni sono state ridimensionate in modo da adattarsi meglio alle dimensioni del display.
- Ritagliata per rimuovere i pixel completamente trasparenti.
- Riduzione del campionamento a RGB565, se possibile senza perdita di fedeltà.
In base al riquadro delimitante risultante, il sistema calcola le dimensioni del carattere dell'immagine o del bitmap, in byte, come una delle seguenti:
- Per le immagini e i caratteri che utilizzano RGBA8888: \( 4 \times width \times height \)
- Per le immagini e i caratteri che utilizzano RGB565: \( 2 \times width \times height \)
- Per le immagini e i caratteri che utilizzano la configurazione bitmap ALPHA_8: \( width \times height \)
Modalità interattiva
Quando calcola l'utilizzo della memoria per la modalità interattiva, il sistema calcola la somma di quanto segue:
- Le dimensioni non elaborate di eventuali caratteri vettoriali.
- L'utilizzo stimato del carattere predefinito del sistema.
- Le dimensioni totali delle immagini e dei caratteri bitmap dopo l'applicazione di ritagli, ridimensionamenti o riformattazioni.
Configurations (Configurazioni)
Per i quadranti contenenti configurazioni, il sistema tenta di calcolare le dimensioni totali delle risorse utilizzate nelle diverse configurazioni. A volte, quando è presente un numero molto elevato di combinazioni, il sistema sovrastima leggermente il numero di risorse utilizzate contemporaneamente nelle diverse configurazioni.
Modalità Ambient e livelli
Per la modalità Ambient, il sistema presuppone che il rendering dello smartwatch venga eseguito utilizzando fino a tre livelli a schermo intero, due dei quali completamente statici:
- Tutto ciò che si trova sotto gli elementi dello smartwatch. La maggior parte del "corpo" del quadrante viene composta in questo livello. Non importa quante immagini vengono utilizzate per disegnare questo livello; il sistema lo conteggia come un'immagine a schermo intero.
- Eventuali lancette, display digitali o complicazioni con associazioni alla piattaforma che vengono visualizzate in modo dinamico.
- Tutti gli elementi elencati dopo le lancette e le complicazioni dell'orologio nel file XML di origine.
In genere, la maggior parte dell'utilizzo della memoria in modalità Ambient è dovuta ai caratteri bitmap, in particolare a quelli di grandi dimensioni.
Metodi per ridurre l'utilizzo della memoria
Se segui i suggerimenti riportati in questa sezione, avrai maggiori probabilità di creare un quadrante il cui consumo di memoria rientra in questi limiti.
Ritagliare e ridimensionare i caratteri bitmap
Ritaglia le immagini e gli oggetti BitmapFont
e ridimensionali in base alle dimensioni di visualizzazione.
Quando Wear OS disegna un quadrante, tutte le immagini vengono decompresse. Un'immagine a schermo intero prevalentemente vuota potrebbe consumare 3 KB su disco, ma se viene visualizzata su uno schermo di 450 x 450 pixel, il sistema la decomprime, aumentandone le dimensioni in memoria a 750 KB o più.
Utilizza altezze dei caratteri bitmap coerenti
Quando utilizzi un BitmapFont
, tutte le immagini di un carattere devono avere la stessa altezza. Analogamente, tutte le immagini per le parole devono avere la stessa altezza.
Utilizzare dimensioni coerenti per i fotogrammi nelle animazioni
Anziché spostare un'immagine su un quadrante, aggiorna gli elementi all'interno dell'immagine e mantieni il relativo riquadro di delimitazione nella stessa posizione rispetto al quadrante. Ad esempio, se vuoi animare un cerchio sul quadrante, ti consigliamo di cambiare il colore di un cerchio anziché farlo scorrere sul quadrante.
Questa tecnica riduce le dimensioni del riquadro di delimitazione calcolata dal sistema per l'animazione.
Deduplicare le immagini
Se il quadrante mostra più copie della stessa immagine, includi una sola copia dell'immagine nella directory delle risorse e fai riferimento più volte.
Mostrare l'avanzamento utilizzando archi
Per emulare una barra di avanzamento che si completa dopo 1 minuto o 1 ora, non
utilizzare 60 immagini separate. Crea invece un oggetto Arc
contenente un'espressione che ne controlla la lunghezza, come mostrato nello snippet di codice seguente:
<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à trattino 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 in cui sono elencati nel file XML di origine. Posizionando le lancette dello smartwatch e le complicazioni alla fine del file, il sistema elimina 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, usa lo strumento di valutazione
dell'impronta di memoria, disponibile nel repository watchface
su GitHub.
Consigliati per te
- Nota: il testo del link viene visualizzato quando JavaScript è disattivato
- Arco
- Linea
- Rettangolo