2010-09-01 23 views
13

J'ai au moins deux contrôleurs dans mon application qui utilisent actuellement leur propre instance CLLocationManager. Je suis curieux cependant si l'utilisation de plusieurs instances impose en fait un fardeau supplémentaire sur le téléphone - au-delà de la mémoire supplémentaire pour les différentes instances.Existe-t-il des pénalités de performances pour l'utilisation de plusieurs instances de CLLocationManager?

L'iPhone va-t-il faire un ping sur le matériel GPS à plusieurs reprises, ou utilise-t-il une sorte de répartition telle que le matériel est extrait et transmis à tous les auditeurs? J'étais sur le point d'écrire ma propre couche d'abstraction pour gérer plusieurs observateurs, mais je voulais vérifier s'il y avait des connaissances pour suggérer que ce n'était pas nécessaire.

Répondre

10

Je dirais non, ce ne serait pas un problème ou une pénalité de performance. Avoir plusieurs instances de CLLocationManager dans une application n'est pas plus coûteux que d'avoir plusieurs applications en arrière-plan, toutes avec CLLocationManagers. Le système d'exploitation configure les radios GPS/cellulaires pour une consommation d'énergie minimale en fonction des demandes combinées de tous les CLLocationManagers. Assurez-vous d'arrêter les mises à jour de localisation sur toutes les instances de CLLocationManager lorsque votre application n'en a plus besoin (ex: dans applicationWillResignActive :) afin que le GPS h/w puisse être désactivé pour économiser la batterie.

+2

"Le système d'exploitation configure les radios GPS/cellulaires pour une consommation d'énergie minimale en fonction des demandes combinées de tous les CLLocationManagers." Où est-il écrit sur les docs? – vfn

+2

"Assurez-vous d'arrêter les mises à jour de localisation sur toutes les instances de CLLocationManager lorsque votre application n'en a plus besoin (par exemple: dans applicationWillResignActive :) afin que le GPS puisse être désactivé pour économiser la batterie." Le GPS ne restera actif que si vous configurez votre application pour recevoir des mises à jour en arrière-plan (seulement iOS4), sinon le GPS sera désactivé si aucune autre application ne demande de localisation. La bonne pratique consiste à se tourner pour arrêter le gestionnaire de localisation dès que vous n'avez pas besoin d'informations GPS, et pas seulement sur applicationWillResignActive :. Changez le "i.e." à "par exemple", et vous le corrigerez. – vfn

+0

des références réelles ou des exemples du monde réel pour soutenir ceci ou est-ce juste votre compréhension? –