2010-09-01 8 views
13

Ich habe mindestens zwei Controller in meiner App, die derzeit ihre eigene CLLocationManager-Instanz verwenden. Ich bin jedoch neugierig, wenn die Verwendung mehrerer Instanzen tatsächlich eine zusätzliche Belastung für das Telefon bedeutet - über den zusätzlichen Speicher für die verschiedenen Instanzen hinaus.Gibt es Leistungseinbußen bei der Verwendung mehrerer Instanzen von CLLocationManager

Schaltet das iPhone die GPS-Hardware mehrmals an oder verwendet es eine Art Versand, so dass die Hardware abstrahiert und nur an alle Empfänger weitergeleitet wird? Ich wollte gerade meine eigene Abstraktionsschicht schreiben, um mehrere Beobachter zu betreuen, aber ich wollte überprüfen, ob es irgendwelche Kenntnisse gab, die nahelegen, dass es nicht notwendig ist.

Antwort

10

Ich würde nein sagen, es wäre kein Problem oder eine Leistungseinbuße. Mehrere Instanzen von CLLocationManager in einer App zu haben, ist nicht teurer als mehrere Anwendungen im Hintergrund, alle mit CLLocationManagers. Das Betriebssystem konfiguriert die GPS/Funkzellen für eine minimale Leistungsnutzung basierend auf den kombinierten Anforderungen aller CLLocationManager.

Achten Sie darauf, die Standortaktualisierungen für alle CLLocationManager-Instanzen zu stoppen, wenn Ihre App sie nicht mehr benötigt (dh in applicationWillResignActive :), sodass die GPS-Funktion deaktiviert werden kann, um Batterie zu sparen.

+2

"Das Betriebssystem konfiguriert die GPS/Funkgeräte für minimalen Stromverbrauch basierend auf den kombinierten Anforderungen aller CLLocationManagers." Wo steht es auf den Dokumenten? – vfn

+2

"Stellen Sie sicher, dass die Standortaktualisierungen für alle CLLocationManager-Instanzen gestoppt werden, wenn Ihre App sie nicht mehr benötigt (dh in applicationWillResignActive :), damit das GPS ausgeschaltet werden kann, um Batterie zu sparen." Das GPS wird nur dann aktiv, wenn Sie Ihre App so konfigurieren, dass Updates im Hintergrund empfangen werden (nur iOS4). Andernfalls wird das GPS deaktiviert, wenn keine andere App nach dem Standort fragt. Es empfiehlt sich, den Standortmanager anzuhalten, sobald Sie keine GPS-Informationen benötigen, und nicht nur auf applicationWillResignActive :. Ändern Sie das "d. H." zu "z. B.", und Sie werden es beheben. – vfn

+0

irgendwelche tatsächlichen Referenzen oder reale Beispiele, um dies zu unterstützen oder ist dies nur Ihr Verständnis? –