L'efficienza energetica è particolarmente importante su Wear OS. I principi di progettazione di Wear OS si concentrano in modo significativo sull'utilizzo della batteria del dispositivo perché lo smartwatch è un dispositivo di piccole dimensioni, pensato per interazioni brevi.
Rispetto ai dispositivi mobili più grandi, i dispositivi Wear OS hanno batterie più piccole, quindi qualsiasi consumo della batteria è più evidente. Inoltre, la ricarica di un dispositivo Wear OS richiede più impegno da parte dell'utente rispetto a un dispositivo mobile. Mentre gli utenti possono ricaricare i propri dispositivi mobili a vari intervalli durante il giorno, devono staccare un dispositivo Wear OS dal corpo prima di ricaricarlo.
Per migliorare l'efficienza energetica della tua app, segui queste best practice di progettazione:
- Il design della tua app deve sfruttare al meglio il fattore di forma di Wear OS. Non deve copiare direttamente la tua app mobile.
- Utilizza l'app mobile esistente per alcuni casi d'uso. Ad esempio, internet e la sincronizzazione sullo smartwatch sono costosi; valuta se il dispositivo mobile potrebbe svolgere il lavoro più pesante e se il dispositivo Wear OS riceve le modifiche ai dati.
- Progetta i casi d'uso per interazioni più brevi.
- Valuta quali eventi di Wear OS utilizzi e con quale frequenza si verificano.
Quando possibile, rimanda il lavoro della tua app fino a quando lo smartwatch non è in carica. Questo vale soprattutto per le attività che richiedono un'elevata quantità di dati, come la sincronizzazione dei dati e l'organizzazione dei database.
Se il dispositivo è in carica e ha una connessione Wi-Fi, pianifica i job per precaricare dati, immagini e aggiornamenti che l'utente probabilmente vuole vedere nella tua app.
Questa guida all'alimentazione ti aiuta a capire quando e come il sistema esegue la tua app e come puoi limitare il tempo di esecuzione e il consumo della batteria della tua app. Per scoprire di più su come vengono eseguite determinate azioni, ad esempio il caricamento di un'app o lo scorrimento di un elenco, consulta le indicazioni relative al rendimento, ad esempio la guida al rendimento di Compose su Wear OS.
Monitorare l'utilizzo della batteria nel tempo
Per analizzare le statistiche della batteria di un dispositivo Wear OS che esegue la tua app, inserisci il seguente comando in una finestra del terminale sulla macchina di sviluppo:
adb shell dumpsys batterystats
Una libreria su GitHub include un parser delle statistiche della batteria, che potrebbe essere utile da eseguire insieme a questo comando.
Eventi che influiscono sulla durata della batteria
Prima di pensare specificamente alla tua app, è utile riflettere in modo più generale sugli eventi che consumano energia su un dispositivo Wear OS.
La tabella seguente mostra l'effetto relativo sulla durata della batteria per diversi eventi comuni nelle app per Wear OS. Il consumo di energia esatto varia a seconda dei dispositivi.
| Evento | Impatto sulla durata della batteria | Azioni di mitigazione |
|---|---|---|
| Accedere alla rete, inclusi LTE e Wi-Fi | Molto alto | Rimanda l'accesso alla rete non essenziale fino a quando il dispositivo non è in carica. |
| Accendere lo schermo e avviare la modalità interattiva | Alta | Non incoraggiare l'utente a tenere lo schermo acceso più a lungo del necessario. Offri un'esperienza che utilizza la modalità sempre attiva, nota anche come modalità Ambient. |
| Accedere al sensore GPS | Alta | Se possibile, attendi che l'utente richieda l'accesso al GPS. |
| Mantenere elevato l'utilizzo della CPU | Alta | Consuma i flussi utilizzando Jetpack Compose. |
| Accedere al sensore del battito cardiaco | Media | Utilizza il tempo di attivazione del processore quando ricevi i callback dall'API del sensore, ad esempio quando utilizzi Health Services su Wear OS. |
| Accedere a un altro dispositivo tramite Bluetooth | Media | Mantieni le sessioni brevi. |
| Mantenere un wakelock | Media | Riduci la creazione manuale di wakelock e utilizza
WorkManager. |
Ridurre al minimo il tempo di accensione dello schermo
Nella tua app Wear OS, segui questi principi di utilizzo dello schermo:
- Blocchi di accensione dello schermo: evita quando possibile. Per eseguire il test, disattiva Display sempre acceso nelle impostazioni di sistema e verifica se lo schermo si spegne entro il periodo di timeout.
- Animazioni: riduci al minimo le animazioni elaborate e concentrati invece su transizioni brevi per un aspetto più professionale. In particolare, evita animazioni e loop di lunga durata. Se è necessario un loop, aggiungi una pausa tra i loop di durata almeno pari a quella dell'animazione stessa.
- Tempo di attivazione in modalità Ambient: supporta la modalità sempre attiva, se necessario, ad esempio per i casi d'uso di fitness. Se la tua app richiede la modalità sempre attiva, segui questi consigli per la modalità Ambient.
Ridurre al minimo l'utilizzo della CPU
Nella tua app per Wear OS, segui questi principi di utilizzo della CPU:
- Mantieni breve l'utilizzo.
- Raggruppa le operazioni correlate per massimizzare il tempo di inattività del processo della tua app.
Ridurre al minimo i wakelock
Nella maggior parte dei casi, evita qualsiasi operazione che impedisca alla tua app di andare in sospensione, ad esempio i wakelock. Ad esempio, nelle app per la salute e il fitness, gli allenamenti di lunga durata non richiedono un wakelock. Utilizza il tempo di attivazione del processore quando ricevi i callback dall'API del sensore, ad esempio quando utilizzi Servizi per la salute su Wear OS.
In alcuni casi è consentito acquisire un wakelock, ad esempio quando la tua app esegue una delle seguenti operazioni:
- Riproduce contenuti multimediali in background.
- Utilizza
WorkManageroJobScheduler. (Il sistema mantiene un wakelock per tuo conto durante l'esecuzione del job in background.)
Per eseguire il debug dei wakelock in locale, utilizza lo strumento di ispezione delle attività in background di Android Studio, il tracciamento del sistema o adb shell dumpsys batterystats per esaminare le singole occorrenze di wakelock di lunga durata, nonché i riepiloghi del numero totale e della durata dei wakelock mantenuti. Confronta il numero e la durata dei wakelock mantenuti dalla tua app con i pattern di utilizzo interattivo della tua app:
- Verifica la presenza di wakelock imprevisti.
- Se la durata è superiore al previsto, valuta se il lavoro è bloccato da qualche dipendenza, ad esempio la disponibilità della rete.
Esaminare come l'app diventa inattiva
Valuta cosa fa l'app attiva quando si verificano eventi chiave del dispositivo, ad esempio:
- Lo schermo si spegne e il dispositivo entra in modalità Ambient.
L'app viene chiusa con uno swipe.
Per analizzare l'attività dell'app, utilizza gli strumenti mostrati nelle sezioni seguenti.
Power Profiler
Power Profiler è accessibile dal menu di Android Studio selezionando Visualizza > Finestre degli strumenti > Profiler:
- Esamina il tracciamento del sistema quando lo schermo si spegne e il dispositivo entra in modalità Ambient.
- Cerca eventuali lavori in corso e il livello di utilizzo della CPU del dispositivo.
Perfetto
Perfetto ti consente di registrare una traccia e poi esaminare la tua app per verificare se ci sono thread che eseguono operazioni quando lo schermo si spegne, il dispositivo entra in modalità Ambient o l'utente chiude l'attività della tua app.
Definisci eventi personalizzati per contrassegnare gli eventi significativi della tua app, inclusi gli eventi specifici del dominio. Per un'app multimediale, questi includono attività come il recupero delle playlist, il download di un elemento multimediale specifico, l'avvio della riproduzione e l'arresto della riproduzione. Definendo questi eventi, puoi visualizzarli in Perfetto e confrontare la loro tempistica con l'utilizzo della CPU e dell'energia della tua app.
Puoi anche utilizzare CLI Android per installare la android-profiler
skill (android skills add android-profiler), che consente agli agenti AI di registrare
i tracciamenti del sistema di Perfetto dalla riga di comando e analizzare le linee di alimentazione, i wakelock e gli stati di sospensione del dispositivo.
Analizzare i job pianificati della tua app
I job pianificati, che utilizzano WorkManager, ti consentono di eseguire il lavoro in background nella tua app. Sebbene alcuni lavori in background debbano essere periodici, non eseguire i job troppo frequentemente o per una durata eccessiva, perché questo può scaricare la batteria del dispositivo.
Utilizza lo strumento di ispezione delle attività in background di Android Studio (Visualizza > Finestre degli strumenti >
Ispezione app) o esegui adb shell dumpsys jobscheduler e adb shell dumpsys
batterystats per esaminare l'esecuzione dei job e dei worker pianificati. Controlla la frequenza di esecuzione e la durata totale:
- Se un job viene eseguito molto frequentemente, valuta la possibilità di ridurre questa frequenza.
- Verifica che il tempo di esecuzione totale corrisponda a quello previsto e non sia significativamente più lungo.
Puoi anche registrare un tracciamento del sistema per correlare l'esecuzione dei job con l'attività della tua app in una sequenza temporale. Tieni in considerazione:
- Per la tua app, la durata dell'esecuzione deve avere un senso.
- Valuta se i job vengono eseguiti mentre l'app è in esecuzione o se rappresentano un lavoro in background periodico.
Sensori
I dispositivi Wear OS hanno molti sensori diversi, ad esempio il GPS. Nella maggior parte dei casi, utilizza
Servizi per la salute su Wear OS anziché interagire direttamente con
SensorManager. In molti casi, Servizi per la salute raggruppa in modo intelligente i dati per migliorare il rendimento della batteria.
Per analizzare l'utilizzo dei sensori nella tua app, esegui il seguente comando in una finestra del terminale sulla macchina di sviluppo:
adb shell dumpsys sensorservice
I risultati di questo comando mostrano quanto segue:
- Registrazioni dei sensori attuali e precedenti.
- Configurazione del sensore, incluso il raggruppamento, se impostato.
- Dati campionati di recente.
Testare l'annullamento della registrazione dei sensori
Per verificare se la tua app smette di recuperare i dati dei sensori come previsto, testa i seguenti scenari:
- Chiudi l'app con uno swipe.
- Tocca lo schermo con il palmo della mano. In questo modo lo schermo si spegne o passa alla modalità Ambient.
Utilizza il comando ADB della sezione precedente per verificare se il sensore viene visualizzato correttamente come non registrato.
Livello dati
Quando utilizzi l'API Data Layer, ogni trasmissione consuma energia. In particolare, se utilizzi questa API per inviare dati, la tua app deve essere attiva per riceverli. Per questi motivi, utilizza questa API con cautela.
Di seguito sono riportate alcune best practice aggiuntive per l'utilizzo dell'API Data Layer:
- Attendi che l'app sia attiva prima di configurare un listener utilizzando
WearableListenerService. - Non utilizzare l'API Data Layer per eseguire periodicamente il ping dello smartwatch per verificare se è disponibile un'app o un dispositivo complementare. Inviando ripetutamente messaggi, l'app attiva la radio e il processo dell'app remota, il che scarica la batteria del dispositivo più del necessario.
Utilizza invece
CapabilityClientper rilevare la disponibilità e le funzionalità del dispositivo oppure invia messaggi solo quando lo stato cambia. Trasmetti le modifiche dello stato anziché configurare aggiornamenti rapidi. Queste modifiche dello stato consentono al dispositivo Wear OS di eseguire calcoli dei dati locali, ad esempio quando è iniziata una sessione di allenamento.
Trasmetti solo le modifiche dello stato che aggiornano la UI. Ad esempio, se la schermata dell'attività mostra solo i "chilometri percorsi" con una cifra decimale, non inviare una modifica dello stato a Wear OS ogni volta che l'utente percorre un altro metro.
Per analizzare l'utilizzo dell'API Data Layer nella tua app, esegui il seguente comando in una finestra del terminale sulla macchina di sviluppo:
adb shell dumpsys activity service WearableService
I risultati di questo comando includono quanto segue:
- RpcService: ti consente di vedere con quale frequenza e quali percorsi vengono chiamati utilizzando
MessageClient. - DataService: ti consente di vedere con quale frequenza vengono impostati gli elementi di dati utilizzando
DataClient.
App per la salute e il fitness
Se gestisci un'app per la salute e il fitness, utilizza Servizi per la salute per ottimizzare l'utilizzo dei sensori da parte dell'app.
- Per
ExerciseClient, utilizza una traccia di sistema, Perfetto oadb shell dumpsys batterystatsper verificare il comportamento corretto in modalità Ambient. Verifica che la tua app non si attivi più frequentemente di una volta al minuto o due per ricevere i datiExerciseUpdate. - Per il monitoraggio generale della salute per tutto il giorno, utilizza il
PassiveMonitoringClient, come descritto nella guida su come monitorare i dati su salute e fitness in background.
Pavè e complicazioni
Se la tua app supporta un pavè o una complicazione, segui queste best practice:
- Disattiva l'aggiornamento automatico o aumenta la frequenza di aggiornamento a 2 ore o più.
- Utilizza Firebase Cloud Messaging (FCM) o job pianificati in modo appropriato per inviare aggiornamenti dei dati. Fai attenzione a evitare una frequenza di aggiornamento elevata, che può far sì che il sistema pianifichi un lavoro ripetuto a una frequenza più elevata di quella con cui l'utente o la piattaforma possono accedere ai dati necessari per eseguire il lavoro.
- Non pianificare il lavoro per il pavè o la complicazione quando l'utente non interagisce con essi.
- Utilizza approcci offline-first.
- Condividi un singolo database tra l'app principale, i pavè e le complicazioni. In questo modo, i dati rimangono coerenti anche tra le superfici della UI.
Consigliati per te
- Nota: il testo del link viene visualizzato quando JavaScript è disattivato
- Accedere alla posizione in background
- Pianificare le sveglie
- Creare un widget avanzato {:#advanced-widget}