Informazioni sulla posizione in background e sulla durata della batteria

L'utilizzo della posizione in background può influire in modo significativo sulla durata della batteria. Android supporta i limiti alla raccolta della posizione in background, invitando gli sviluppatori a ottimizzare le loro applicazioni per una migliore efficienza della batteria. Queste ottimizzazioni sono utili per tutti i dispositivi, indipendentemente dalla versione di Android in esecuzione.

Con i limiti di accesso alla posizione in background:

  • La raccolta della posizione in background è limitata e la posizione viene calcolata e fornita solo poche volte all'ora.
  • Le scansioni Wi-Fi sono più conservative e gli aggiornamenti della posizione non vengono calcolati quando il dispositivo rimane connesso allo stesso punto di accesso statico.
  • La reattività del geofencing passa da decine di secondi a circa due minuti. Questa modifica migliora le prestazioni della batteria, fino a 10 volte su alcuni dispositivi.

Conoscenze richieste

Questo documento presuppone che tu abbia familiarità con le seguenti API:

Informazioni sul consumo eccessivo della batteria

La raccolta della posizione e il consumo della batteria sono correlati come segue:

  • Precisione: la precisione dei dati sulla posizione. In generale, maggiore è l'accuratezza, maggiore è il consumo della batteria.
  • Frequenza: la frequenza con cui viene calcolata la posizione. Più spesso viene calcolata la posizione, maggiore è il consumo di batteria.
  • Latenza: la velocità con cui vengono forniti i dati sulla posizione. In genere, una latenza inferiore richiede più batteria.

Accuratezza

Puoi specificare la precisione della localizzazione utilizzando il metodo setPriority(), passando uno dei seguenti valori come argomento:

  • PRIORITY_HIGH_ACCURACY fornisce la posizione più precisa possibile, che viene calcolata utilizzando tutti gli input necessari (attiva GPS, Wi-Fi e rete mobile e utilizza una serie di Sensori) e potrebbe causare un consumo significativo della batteria.
  • PRIORITY_BALANCED_POWER_ACCURACY fornisce una posizione precisa ottimizzando al contempo il consumo energetico. Utilizza il GPS molto raramente. In genere utilizza una combinazione di informazioni Wi-Fi e della rete mobile per calcolare la posizione del dispositivo.
  • PRIORITY_LOW_POWER si basa principalmente sulle torri cellulari ed evita gli input GPS e Wi-Fi, fornendo un'approssimazione approssimativa (a livello di città) con un consumo minimo della batteria.
  • PRIORITY_PASSIVE riceve le posizioni passivamente da altre app per le quali la posizione è già stata calcolata.

Utilizza le opzioni di risparmio energetico o di alimentazione bilanciata per soddisfare le esigenze di localizzazione della maggior parte delle app. Riserva l'alta precisione per le app che vengono eseguite in primo piano e richiedono aggiornamenti della posizione in tempo reale (ad esempio, un'app di mappatura).

Frequenza

Puoi specificare la frequenza della posizione utilizzando due metodi:

  • Utilizza il metodo setIntervalMillis() per specificare l'intervallo per il calcolo della posizione della tua app.
  • Utilizza il metodo setMinUpdateIntervalMillis() per specificare l'intervallo per la ricezione delle posizioni di altre app.

Passa il valore più grande possibile quando utilizzi setIntervalMillis(). Questo vale soprattutto per la raccolta della posizione in background, che spesso consuma la batteria. Riserva intervalli di alcuni secondi per i casi d'uso in primo piano.

I limiti di accesso alla posizione in background introdotti in Android 8.0 (livello API 26) applicano queste strategie, ma la tua app dovrebbe cercare di applicarle sui dispositivi con Android 7.0 (livello API 24) e versioni precedenti.

Latenza

Puoi specificare la latenza utilizzando il metodo setMaxUpdateDelayMillis(), in genere passando un valore che è diverse volte superiore all'intervallo specificato nel metodo setIntervalMillis(). Questa impostazione ritarda la pubblicazione della posizione e più aggiornamenti della posizione potrebbero essere pubblicati in gruppi. Queste due modifiche contribuiscono a ridurre al minimo il consumo della batteria.

Se la tua app non ha bisogno immediatamente di un aggiornamento della posizione, devi passare il valore più grande possibile al metodo setMaxUpdateDelayMillis(), scambiando di fatto la latenza con una maggiore efficienza dei dati e della batteria.

Quando utilizzano i geofence, le app devono passare un valore elevato al metodo setNotificationResponsiveness() per risparmiare energia. È consigliabile un valore di cinque minuti o superiore.

Per approfondire

Per ulteriori informazioni, consulta i seguenti documenti:

  • Suggerimenti: questa guida illustra alcune azioni consigliate concrete che puoi intraprendere per migliorare l'impatto della tua app sulla durata della batteria.
  • Casi d'uso: questa guida fornisce diversi casi d'uso comuni in cui potresti utilizzare i servizi di localizzazione e spiega come ottimizzare l'impatto sulla durata della batteria in questi casi.