Migliora le prestazioni del quadrante con l'accelerazione hardware

Le app per Wear OS che utilizzano le visualizzazioni standard beneficiano del rendering automatico delle immagini con accelerazione hardware. Tuttavia, i quadranti in genere vengono implementati usando tela, in modo da non ottenere automaticamente l'accelerazione hardware.

Perché utilizzare una tela con accelerazione hardware per il quadrante?

Nella maggior parte dei casi, il quadrante viene visualizzato a una frequenza fotogrammi più elevata quando utilizzi un canvas con accelerazione hardware. A frequenze fotogrammi più elevate, le animazioni e le transizioni sono più fluide all'occhio, offrendo un'esperienza utente migliore.

Quando usi un canvas con accelerazione hardware, puoi anche accedere a una maggiore quantità di dati sulle prestazioni dell'UI sul tuo quadrante. Ad esempio, puoi accedere alle informazioni dettagliate sul frame descritte nella sezione Misurare le prestazioni dell'interfaccia utente quando utilizzi un canvas con accelerazione hardware.

Il mio quadrante utilizza l'accelerazione hardware?

Puoi controllare se il quadrante utilizza l'accelerazione hardware utilizzando le opzioni sviluppatore o adb.

Controlla usando Opzioni sviluppatore

Per utilizzare le opzioni sviluppatore per controllare se il quadrante utilizza l'accelerazione hardware, segui questi passaggi:

  1. Su un dispositivo Wear OS, vai a Impostazioni > Opzioni sviluppatore.
  2. Attiva Debug profilazione GPU.

    Questa opzione disegna un overlay sulle superfici visibili, una su ogni superficie, per mostrare la quantità di tempo trascorsa in ciascuna fase del rendering della GPU per quella superficie.

  3. Sul dispositivo, torna al quadrante.

  4. Se il tuo quadrante utilizza una canvas con accelerazione hardware, vedi una nuova barra che si sposta da destra a sinistra per ogni frame visualizzato del quadrante.

Controllo con ADB

Per utilizzare adb per controllare se il quadrante utilizza l'accelerazione hardware, procedi nel seguente modo:

  1. Su un dispositivo Wear OS, cambia il quadrante in quello che vuoi testare.
  2. Lascia in esecuzione il quadrante per alcuni secondi in modalità interattiva.
  3. Esegui il seguente comando adb per verificare se il quadrante utilizza l'accelerazione hardware:

    adb shell dumpsys gfxinfo [package-name]

Dopo aver eseguito il comando, ottieni un output simile al seguente esempio:

Applications Graphics Acceleration Info:
Uptime: 2239933 Realtime: 13568751

** Graphics info for pid 1100 [package-name] **

Stats since: 59875589194ns
Total frames rendered: 1213
Janky frames: 0 (0.00%)
50th percentile: 7ms
90th percentile: 18ms
95th percentile: 25ms
99th percentile: 150ms
Number Missed Vsync: 0
Number High input latency: 0
Number Slow UI thread: 0
Number Slow bitmap uploads: 0
Number Slow issue draw commands: 0
Number Frame deadline missed: 0

...

In questo output di esempio, vedrai la riga Total frames rendered. In genere, se l'output mostra il totale dei frame il cui rendering è superiore a 0, il quadrante utilizza un canvas accelerato. In caso contrario, il totale dei frame visualizzati e gli altri dati dei frame nel report sono in genere pari a 0.

Tuttavia, poiché l'output gfxinfo viene generato per il pacchetto completo della tua app, potresti visualizzare alcune informazioni sulla durata frame provenienti da elementi diversi da un canvas con accelerazione hardware, ad esempio un elemento Activity utilizzato dalla tua app per una schermata di configurazione. Per comunicare la differenza, assicurati che il quadrante sia l'unica superficie visibile, quindi esegui nuovamente il comando adb shell dumpsys gfxinfo per verificare se il valore di Total frames rendered aumenta.

Best practice

Segui queste best practice per garantire la migliore esperienza possibile ai tuoi utenti.

Massimizzare la durata della batteria

Se il tuo quadrante ha animazioni a lunga esecuzione, l'uso dell'accelerazione hardware può ridurre notevolmente la durata della batteria di un dispositivo. Il problema può peggiorare se il quadrante cerca di apparire in ogni fotogramma. Per evitare di avere un impatto negativo sugli utenti, non utilizzare animazioni di lunga durata nel quadrante. Questa linea guida non è specifica per l'utilizzo dell'accelerazione hardware, ma poiché l'utilizzo dell'accelerazione hardware aumenta il numero di frame che puoi tracciare, è ancora più importante seguire. Per ulteriori informazioni, consulta le best practice per le animazioni.

Utilizzare le operazioni di disegno supportate

Alcune operazioni di disegno non sono supportate quando si utilizza l'accelerazione hardware. Per informazioni sui contenuti supportati, vedi Accelerazione hardware. Se hai un percorso di codice di piccole dimensioni che utilizza un'operazione non supportata, puoi creare un canvas basato su bitmap e quindi disegnare la bitmap nella canvas del quadrante utilizzando canvas.drawBitmap().

Mantenere la compatibilità quando si utilizza l'accelerazione hardware

L'accelerazione hardware è disponibile sui dispositivi Wear OS con Android 9 (livello API 28) o versioni successive. Se vuoi evitare un'operazione di disegno specifica sui dispositivi meno recenti, dove l'accelerazione hardware non è disponibile, o un'operazione di disegno non supportata su canvas con accelerazione hardware, puoi selezionare Canvas.isHardwareAccelerated(), quindi fornire la funzionalità alternativa.