2012-03-30 10 views
68

Se sto creando un'app per smartphone che scarica regolarmente dati da un server e carica in modo intermittente dati (analisi, annunci, ecc.), Cosa posso fare per minimizzare l'impatto sulla durata della batteria di tali trasferimenti?Riduzione dell'impatto della batteria delle app che scaricano contenuti su una radio dello smartphone

L'impatto della batteria dei trasferimenti utilizzando la radio wireless (2G, 3G, LTE, ecc.) È particolarmente significativo. C'è qualcosa riguardo al profilo di consumo energetico della radio wireless che dovrebbe influenzare le mie scelte su quando, cosa e come trasferire dati al fine di minimizzare il suo impatto sulla durata della batteria?

risposta

79

Questa risposta è riassunta dalla classe Training Android, Transferring Data Without Draining the Battery che spiega come ridurre al minimo l'impatto durata della batteria di download e le connessioni di rete, in particolare in relazione alla radio wireless .

In particolare Optimizing Downloads for Efficient Network Access spiega la macchina dello Stato radio wireless in dettaglio e va avanti a spiegare come modello di connettività della tua applicazione dovrebbe interagire con esso ridurre al minimo il consumo della batteria connessi.

La macchina a stati radio wireless

Reference

Ogni volta che si crea una nuova connessione di rete la radio passerà allo stato di piena potenza. Questa transizione richiede in genere circa 2 secondi, quindi per ridurre al minimo la latenza, la radio introduce un ritardo per posticipare la transizione verso stati di energia più bassi.

Una tipica radio 3G rimane a piena potenza per 5 secondi dopo il completamento del trasferimento, prima di attendere altri 12 secondi allo stato di basso consumo energetico prima di passare in standby. In totale la radio attinge energia per quasi 20 secondi ogni volta che si effettua una connessione.

Questo approccio può portare a inefficienze per le app in esecuzione sui moderni sistemi operativi per smartphone, in cui le app vengono eseguite sia in primo piano (dove la latenza è importante) sia in background (in cui la durata della batteria deve essere prioritaria).

Solutions

La chiave per ridurre al minimo l'effetto di download sulla batteria è riconoscere che la frequenza dei trasferimenti ha un impatto più drammatico rispetto alla dimensione dei download. In termini pratici, il prefetching e l'accodamento/raggruppamento dei trasferimenti sono particolarmente efficaci.

Sapendo che ogni volta che si avvia una connessione è possibile che la radio assorba energia per circa 20 secondi, è importante raggruppare i trasferimenti di dati in modo che si verifichino trasferimenti di spostamento di fase che devono verificarsi all'interno di un sistema simile finestra temporale in modo da trasferire il maggior numero di dati possibile durante ogni sessione di trasferimento per ridurre al minimo il numero di sessioni.

Analogamente, il prefetching consente di scaricare tutti i dati di cui si ha probabilmente bisogno per un determinato periodo di tempo in un singolo burst, su una singola connessione, a piena capacità. Caricando i trasferimenti frontalmente, si riduce il numero di attivazioni radio necessarie per scaricare i dati, conservare la durata della batteria, migliorare la latenza, ridurre la larghezza di banda e ridurre i tempi di download.

Tuttavia, il precaricamento introduce anche il rischio di aumentare il consumo della batteria e l'uso della larghezza di banda per il download di dati che non viene utilizzato.

Quanto è importante il prefetch dipende dalla dimensione dei dati scaricati e dalla probabilità che venga utilizzato. In generale, è consigliabile eseguire il precaricamento dei dati in modo che sia necessario avviare un altro download ogni 2-5 minuti e nell'ordine da 1 a 5 megabyte.

E 'anche generalmente più efficace per riutilizzare le connessioni di rete esistenti, piuttosto che crearne di nuovi. Il riutilizzo delle connessioni consente inoltre alla rete di reagire in modo più intelligente alla congestione e ai relativi problemi dei dati di rete.

11

vi consiglio di aggiungere una preferenza "Come spesso sync" per le impostazioni del app - così l'utenteha qualche voce in equilibrio freschezza dei dati contro l'utilizzo della batteria. Utenti diversi hanno priorità diverse.

Problemi correlati