Ottimizza i quadranti

Un quadrante Wear OS funziona senza interruzioni, quindi deve utilizzare l'alimentazione in modo efficiente.

Ottimizza il più possibile le prestazioni del quadrante. Questa pagina fornisce le best practice per l'ottimizzazione generale del quadrante e le best practice per animazioni e immagini.

Ottimizzazione di base

Questa sezione contiene le best practice per migliorare l'efficienza complessiva del quadrante.

Colore e luminosità del quadrante

L'uso di colori scuri sul quadrante consuma meno energia dallo smartwatch dell'utente. Di seguito sono riportati alcuni consigli per impostare lo sfondo del quadrante in modo da ottimizzare l'utilizzo della batteria da parte del quadrante:

  • Colore:se possibile, utilizza uno sfondo nero.
  • Luminosità: se non è possibile utilizzare uno sfondo nero, mantieni la luminosità del colore di sfondo al livello o al di sotto del 25% su una scala di tonalità, saturazione, valore (HSV) o tonalità, saturazione e luminosità (HSB). Ad esempio, se utilizzi la classe Color per impostare un colore di sfondo definito con la scala HSV, utilizza 25 o un valore inferiore per l'impostazione del valore, che controlla la luminosità.

Utilizzare funzionalità dinamiche per interagire con lo smartphone

Quando un quadrante richiede un'operazione sul telefono, esegui il codice solo quando il quadrante è attivo. Il metodo consigliato per consentire all'app sul telefono di sapere che il quadrante corrispondente è attivo è l' API CapabilityClient.

Monitora il consumo di corrente

L' app complementare Wear OS consente a sviluppatori e utenti di vedere quanta batteria viene consumata da diversi processi sul dispositivo indossabile. Per verificarlo, vai a Impostazioni > Batteria dell'orologio.

Registrare quadranti sensibili alla crittografia

Android 7.0 e versioni successive includono il supporto per la crittografia basata su file e consente l'esecuzione delle applicazioni con conoscenza della crittografia prima che l'utente fornisca il passcode di decriptazione all'avvio. Questo può ridurre la durata della transizione dall'animazione all'avvio al quadrante orologio fino a 30 secondi.

Per un avvio più rapido, aggiungi android:directBootAware="true" al manifest del quadrante.

Nota: usa questa funzionalità con i quadranti che non utilizzano l'archiviazione criptata con credenziali.

Best practice per le animazioni

Le best practice in questa sezione aiutano a ridurre il consumo di energia associato alle animazioni.

Ridurre la frequenza fotogrammi delle animazioni

Le animazioni sono spesso costose dal punto di vista computazionale e consumano una notevole quantità di energia. La maggior parte delle animazioni ha un aspetto fluido a 30 frame al secondo, quindi evita di eseguirle a una frequenza fotogrammi più elevata. Puoi invece usare frequenze fotogrammi dinamiche. Per ulteriori informazioni, vedi il quadrante orologio Canvas di esempio.

Lascia la CPU in modalità di sospensione tra le animazioni

Per massimizzare la durata della batteria, usa le animazioni con parsimonia. Anche i due punti lampeggianti consumano la batteria a ogni battito.

Le animazioni e le piccole modifiche ai contenuti del quadrante riattivano la CPU. Lascia la CPU in modalità di sospensione tra un'animazione e l'altra, ad esempio, utilizzando brevi sequenze di animazioni ogni secondo in modalità interattiva e lasciando poi che la CPU passi in modalità di sospensione fino al secondo successivo. Lasciare la CPU in sospensione spesso, anche brevemente, può ridurre significativamente il consumo di energia.

Best practice per le immagini

Le best practice riportate in questa sezione aiutano a ridurre il consumo di energia associato alle immagini.

Ridurre le dimensioni degli asset bitmap

Molti quadranti consistono in un'immagine di sfondo e in altre risorse grafiche che vengono trasformate e sovrapposte all'immagine di sfondo, come lancette di orologio e altri elementi che si muovono nel tempo. Più sono grandi queste risorse grafiche, più costoso è dal punto di vista di calcolo trasformarle. In genere, questi elementi grafici vengono ruotati e talvolta ridimensionati all'interno del metodo Render.CanvasRenderer.render() ogni volta che il sistema ridisegna il quadrante, come descritto nella sezione Disegnare un quadrante.

Figura 1. Ritaglia le lancette dell'orologio per rimuovere i pixel aggiuntivi.

La riduzione delle dimensioni degli asset bitmap migliora le prestazioni delle animazioni e consente di risparmiare energia. Segui questi suggerimenti per migliorare le prestazioni del tuo quadrante:

  • Non utilizzare elementi grafici più grandi del necessario.
  • Rimuovi i pixel super trasparenti intorno ai bordi.

Ad esempio, le dimensioni dell'immagine della lancetta dell'orologio sulla sinistra nella figura 1 possono essere ridotte del 97% rimuovendo i pixel trasparenti in più, come mostrato nella parte destra della figura.

Combinare gli asset bitmap

Se hai bitmap che spesso vengono tracciate insieme, valuta la possibilità di combinarle in un'unica risorsa grafica. Ad esempio, spesso puoi combinare l'immagine di sfondo in modalità interattiva con i segni di spunta per evitare di tracciare due bitmap a schermo intero ogni volta che il sistema ritraccia il quadrante.

Disattiva l'anti-alias quando disegni bitmap ridimensionati

Quando disegni una bitmap scalata sull'oggetto Canvas utilizzando il metodo Canvas.drawBitmap(), puoi fornire un'istanza Paint per configurare diverse opzioni. Per migliorare le prestazioni, disattiva l'anti-aliasing utilizzando il metodo setAntiAlias(), poiché questa opzione non ha alcun effetto sulle bitmap.

Figura 2. Esempio di filtro bitmap disabilitato (a sinistra) e attivato (a destra).

Utilizzare il filtro bitmap

Per gli asset bitmap che disegni sopra altri elementi, abilita i filtri bitmap sulla stessa istanza Paint utilizzando il metodo setFilterBitmap(). La Figura 2 mostra una vista ingrandita di una lancetta dell'orologio con e senza filtri bitmap.

Nota: quando la modalità Ambient è attiva, disattiva il filtro bitmap. Nella modalità Ambient a basso bit, il sistema non esegue il rendering in modo affidabile dei colori dell'immagine per consentire la corretta elaborazione del filtro bitmap.

Sposta le operazioni costose al di fuori del metodo di disegno

Il sistema chiama il metodo Render.CanvasRenderer.render() ogni volta che viene ridisegnato il quadrante. Per migliorare le prestazioni, includi in questo metodo solo le operazioni strettamente necessarie all'aggiornamento del quadrante.

Se possibile, evita di eseguire le seguenti operazioni all'interno del metodo Render.CanvasRenderer.render():

  • Caricamento di immagini e altre risorse in corso...
  • Ridimensionamento delle immagini
  • Allocazione degli oggetti
  • Computazioni i cui risultati non cambiano da un frame all'altro

Per analizzare le prestazioni del tuo quadrante, utilizza il Profiler CPU. In particolare, assicurati che il tempo di esecuzione per l'implementazione di Render.CanvasRenderer.render() sia breve e coerente tra le varie chiamate. Per maggiori informazioni, consulta Esaminare l'attività della CPU con il Profiler CPU.

L' app di esempio per il quadrante mostra le best practice per la configurazione di un quadrante.