2010-09-01 8 views
13

Nella mia app sono presenti almeno due controllori che attualmente utilizzano la propria istanza CLLocationManager. Sono curioso, tuttavia, se l'utilizzo di più istanze impone effettivamente un onere aggiuntivo per il telefono, oltre alla memoria aggiuntiva per le diverse istanze.È prevista una penalità di prestazioni per l'utilizzo di più istanze di CLLocationManager

L'iPhone eseguirà il ping dell'hardware GPS più volte o utilizzerà una sorta di dispatch in modo tale che l'hardware sia astratto e appena inoltrato a tutti gli ascoltatori? Stavo per scrivere il mio livello di astrazione per gestire più osservatori, ma volevo verificare se esistesse qualche conoscenza per suggerire che non fosse necessario.

risposta

10

Direi di no, non sarebbe un problema o una penalizzazione delle prestazioni. Avere più istanze di CLLocationManager in un'unica app non è più costoso che avere più app in background tutte con CLLocationManagers. Il sistema operativo configura le radio GPS/cellulare per un consumo energetico minimo in base alle richieste combinate di tutti i CLLocationManager.

Assicurarsi di interrompere gli aggiornamenti di posizione su tutte le istanze di CLLocationManager quando l'app non ne ha più bisogno (ad esempio: in applicationWillResignActive :) in modo che il GPS h/w possa essere disattivato per risparmiare batteria.

+2

"Il sistema operativo configura le radio GPS/cellulare per un consumo energetico minimo in base alle richieste combinate di tutti i CLLocationManagers." Dove è scritto sui documenti? – vfn

+2

"Assicurati di interrompere gli aggiornamenti di posizione su tutte le istanze di CLLocationManager quando la tua app non ne ha più bisogno (ad es .: in applicationWillResignActive :) in modo che il GPS possa essere spento per risparmiare la batteria." Il GPS continuerà ad essere attivo solo se configuri la tua app per ricevere gli aggiornamenti in background (solo iOS4), altrimenti il ​​GPS verrà disattivato se nessun'altra app sta richiedendo la posizione. La buona pratica è quella di girare per fermare il gestore della posizione non appena non hai bisogno di informazioni GPS, e non solo su applicationWillResignActive :. Cambia "i.e." a "ad es.", e lo aggiusterai. – vfn

+0

eventuali riferimenti reali o esempi di mondo reale a sostegno di ciò o è solo la tua comprensione? –

Problemi correlati