Risparmiare carica e batteria

Parole chiave: wearos, potenza, batteria, prestazioni

L'efficienza energetica è particolarmente importante su Wear OS. I principi di design di Wear OS si concentrano in modo significativo sull'utilizzo dell'alimentazione del dispositivo perché lo smartwatch è un form factor 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, l'utente deve fare più fatica a ricaricare un dispositivo Wear OS rispetto a un dispositivo mobile. Sebbene gli utenti possano ricaricare i propri dispositivi mobili a vari intervalli durante la giornata, 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 dell'app deve sfruttare al meglio il fattore di forma di Wear OS. Non deve copiare direttamente la tua app mobile.
  • Utilizza la tua app mobile esistente per risolvere determinati casi d'uso. Ad esempio, internet e la sincronizzazione sull'orologio sono costosi. Valuta se il dispositivo mobile potrebbe svolgere il lavoro più impegnativo e il dispositivo Wear OS ricevere le modifiche ai dati.
  • Progetta i casi d'uso per interazioni più brevi.
  • Valuta quali eventi Wear OS utilizzi e la frequenza con cui si verificano.
  • Se possibile, posticipa il lavoro dell'app fino a quando lo smartwatch è in carica. Ciò vale in particolare per le attività che richiedono un uso intensivo di dati, come la sincronizzazione dei dati e l'organizzazione dei database.

    Se il dispositivo è in carica e dispone di una connessione Wi-Fi, pianifica i job per prelevare in anteprima i dati, le immagini e gli aggiornamenti che l'utente probabilmente vuole visualizzare 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 dell'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 alle prestazioni, ad esempio la guida alle prestazioni di Scrivi su Wear OS.

Monitorare l'utilizzo della batteria nel tempo

Per analizzare le statistiche della batteria di un dispositivo Wear OS su cui è in esecuzione la tua app, inserisci il seguente comando in una finestra del terminale sulla tua 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, vale la pena 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 in diversi eventi comuni nelle app per Wear OS. Il consumo di energia esatto varia in base al dispositivo.

Evento Impatto sulla durata della batteria Come mitigare
Accedere alla rete, inclusi LTE e Wi-Fi Molto alto Ritarda l'accesso alla rete non essenziale fino a quando il dispositivo non è in carica.
Attivare lo schermo e avviare la modalità interattiva Alto Non incoraggiare l'utente a tenere acceso lo schermo più del necessario. Offri un'esperienza che utilizzi la modalità sempre attiva, nota anche come modalità Ambient.
Accedere al sensore GPS Alto Se possibile, attendi che l'utente richieda l'accesso al GPS.
Mantenere elevato l'utilizzo della CPU Alto Utilizza i flussi con Jetpack Compose.
Accedere al sensore di 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 brevi le sessioni.
Mantieni un wakelock Media Riduci la creazione manuale dei wakelock e utilizza WorkManager.

Riduci al minimo il tempo di utilizzo dello schermo

Nell'app Wear OS, segui questi principi di utilizzo dello schermo:

  • Blocchi con schermo attivo: evitali se possibile. Per eseguire il test, disattiva l'opzione Display sempre attivo nelle impostazioni di sistema e controlla se lo schermo si spegne entro il periodo di spegnimento.
  • Animazioni:riduci al minimo le animazioni elaborate e concentrati 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 un loop e l'altro almeno della durata dell'animazione stessa.
  • Tempo di attività in modalità Ambient:supporta la modalità sempre attiva, se necessario, ad esempio per i casi d'uso per il fitness. Se la tua app richiede il servizio sempre attivo, verifica che svolga quanto segue quando il dispositivo è in modalità Ambient:

    • Riduce la percentuale di illuminazione dello schermo del dispositivo.
    • Non mostra animazioni.
    • Non aggiorna i contenuti dello schermo, tranne durante un callback onAmbientUpdate().

Riduci al minimo l'utilizzo della CPU

Nell'app Wear OS, segui questi principi di utilizzo della CPU:

  • Mantieni breve l'utilizzo.
  • Esegui in batch tutte le operazioni correlate per massimizzare il tempo in cui il processo della tua app è inattivo.

Riduci al minimo i wakelock

Nella maggior parte dei casi, evita operazioni che impediscono alla tua app di entrare in modalità di sospensione, come i wakelock. Ad esempio, nelle app per la salute e il fitness, gli allenamenti di lunga durata non richiedono un blocco di attivazione. Utilizza il tempo di attivazione del processore quando ricevi i callback dall'API del sensore, ad esempio quando utilizzi Health Services su Wear OS.

In alcuni casi è consentito acquisire un blocco di riattivazione, ad esempio quando la tua app esegue una delle seguenti operazioni:

  • Riproduci i contenuti multimediali in background.
  • Utilizza WorkManager o JobScheduler. Il sistema mantiene un awakelock per tuo conto durante l'esecuzione del job in background.

Battery Historian ti consente di visualizzare le singole occorrenze di wakelock di lunga durata, nonché i riepiloghi del numero totale e della durata dei wakelock in corso. Controlla il numero e la durata dei wakelock trattenuti dalla tua app e confronta queste informazioni con i pattern di utilizzo interattivo della tua app:

  • Controlla la presenza di wakelock imprevisti.
  • Se la durata è più lunga del previsto, valuta se il lavoro è bloccato su alcune dipendenze, ad esempio la disponibilità della rete.

Controlla in che modo la tua app diventa inattiva

Considera 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 scorrimento.

Per analizzare l'attività nelle app, utilizza gli strumenti mostrati nelle sezioni seguenti.

Power Profiler

Power Profiler è accessibile nel menu di Android Studio selezionando Visualizza > Finestre degli strumenti > Profiler:

  1. Controlla la traccia di sistema quando lo schermo si spegne e il dispositivo entra in modalità Ambient.
  2. Cerca eventuali attività in corso e il livello di utilizzo della CPU del dispositivo.

Perfetto

Perfetto ti consente di registrare una traccia e poi di ispezionare l'app per vedere se ci sono thread che eseguono operazioni quando lo schermo si spegne, il dispositivo entra in modalità Ambient o l'utente ignora l'attività dell'app.

Definisci eventi personalizzati per contrassegnare gli eventi significativi della tua app, inclusi quelli specifici del dominio. Per un'app multimediale, sono incluse attività come il recupero delle playlist, il download di un elemento multimediale specifico, l'avvio e l'interruzione della riproduzione. Se li definisci, puoi visualizzarli in Perfetto e confrontarne la tempistica con l'utilizzo della CPU e dell'alimentazione della tua app.

Analizzare i job pianificati della tua app

I job pianificati, che utilizzano WorkManager, ti consentono di eseguire attività in background nella tua app. Sebbene alcune attività in background debbano essere periodiche, non eseguire i job troppo spesso o per una durata prolungata, perché questo può scaricare la batteria del dispositivo.

Utilizza Battery Historian per ispezionare l'esecuzione dei job pianificati, sia complessivamente (Statistiche di sistema > Statistiche di JobScheduler) sia per app (Statistiche app > Job pianificato). Controlla il conteggio totale e la durata totale:

  • Se un job viene eseguito molto di frequente, valuta la possibilità di ridurne la frequenza.
  • Verifica che il tempo di esecuzione totale corrisponda a quello previsto e non sia molto più lungo.

Inoltre, controlla il grafico di Battery Historian, esaminando ogni voce JobScheduler. Quando passi il cursore sopra una determinata voce, Battery Historian mostra il proprietario del job in esecuzione. Tieni in considerazione:

  • Per la tua app, la durata dell'esecuzione deve avere senso.
  • Valuta se i job si verificano durante l'esecuzione dell'app o se rappresentano un lavoro in background periodico.

Sensori

I dispositivi Wear OS dispongono di molti sensori diversi, ad esempio il GPS. Nella maggior parte dei casi, utilizza Health Services su Wear OS anziché interagire direttamente con SensorManager. In molti casi, Health Services raggruppa in modo intelligente i dati per migliorare le prestazioni della batteria.

Per analizzare l'utilizzo del sensore nella tua app, esegui il seguente comando in una finestra del terminale sul computer 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.

Prova la disattivazione dai sensori

Per verificare se l'app smette di recuperare i dati del sensore come previsto, testa i seguenti scenari:

  1. Scorri per chiudere l'app.
  2. Tocca lo schermo con il palmo. Lo schermo viene disattivato o attiva la 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 utilizza una certa potenza. In particolare, se utilizzi questa API per inviare dati, l'app deve riattivarsi per riceverli. Per questi motivi, ti consigliamo di utilizzare questa API con cautela.

Ecco alcune best practice aggiuntive per l'utilizzo dell'API Data Layer:

  • Attendi che l'app sia attiva prima di configurare un ascoltatore utilizzando WearableListenerService.
  • Trasmetti le modifiche dello stato anziché configurare gli aggiornamenti rapidi. Queste modifiche dello stato consentono al dispositivo Wear OS di eseguire calcoli dei dati locali, ad esempio quando viene avviata una sessione di allenamento.

    Trasmetti solo le modifiche dello stato che aggiornano la UI. Ad esempio, se la schermata dell'attività mostra solo "chilometri percorsi" con una cifra decimale, non inviare una modifica dello stato a Wear OS ogni volta che l'utente si sposta di un altro metro.

Per analizzare l'utilizzo dell'API Data Layer nella tua app, esegui il seguente comando in una finestra del terminale sulla tua macchina di sviluppo:

adb shell dumpsys activity service WearableService

I risultati di questo comando includono quanto segue:

  • RpcService: consente di vedere con quale frequenza e quali percorsi vengono chiamati utilizzando MessageClient.
  • DataService: consente di vedere la frequenza con cui gli elementi di dati vengono impostati utilizzando DataClient.

App per la salute e l'attività fisica

Se gestisci un'app per la salute e il fitness, utilizza Servizi sanitari per ottimizzare l'utilizzo dei sensori da parte della tua app.

  • Per ExerciseClient, utilizza Battery Historian per verificare il comportamento corretto in modalità Ambient. Verifica che l'app non si riattivi più spesso ogni uno o due minuti per ricevere i dati di ExerciseUpdate.
  • Per il monitoraggio generale della salute per tutto il giorno, utilizza PassiveMonitoringClient, come описано nella guida su come monitorare i dati di salute e fitness in background.

Riquadri e complicazioni

Se la tua app supporta un riquadro 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 non impostare una frequenza di aggiornamento elevata, poiché il sistema potrebbe pianificare attività ripetute a una velocità superiore a quella con cui l'utente o la piattaforma possono accedere ai dati necessari per eseguire l'attività.
  • Non pianificare attività per il riquadro o la complicazione quando l'utente non interagisce con essi.
  • Utilizza approcci offline first.
  • Condividi un unico database tra l'app principale, le schede e le complicazioni. In questo modo, i dati rimangono coerenti anche nelle interfacce utente.