2010-09-01 13 views
13

Tengo al menos dos controladores en mi aplicación que actualmente usan su propia instancia de CLLocationManager. Sin embargo, tengo curiosidad si el uso de instancias múltiples realmente impone una carga adicional en el teléfono, más allá de la memoria adicional para las diferentes instancias.¿Hay alguna penalización de rendimiento por usar varias instancias de CLLocationManager?

¿El iPhone hará ping al hardware del GPS varias veces, o utiliza algún tipo de envío de manera que el hardware se abstraiga y se reenvíe a todos los oyentes? Estaba a punto de escribir mi propia capa de abstracción para manejar varios observadores, pero quería verificar si había algún conocimiento para sugerir que no era necesario.

Respuesta

10

Yo diría que no, no sería un problema o una penalización de rendimiento. Tener múltiples instancias de CLLocationManager en una aplicación no es más costoso que tener varias aplicaciones en segundo plano, todas con CLLocationManagers. El sistema operativo configura las radios GPS/celulares para un uso mínimo de energía en función de las solicitudes combinadas de todos los CLLocationManagers.

Asegúrese de detener las actualizaciones de ubicación en todas las instancias de CLLocationManager cuando su aplicación ya no lo necesite (es decir: en applicationWillResignActive :) para que el GPS h/w pueda desactivarse para ahorrar batería.

+2

"El sistema operativo configura las radios GPS/celulares para un uso mínimo de energía en función de las solicitudes combinadas de todos los CLLocationManagers". ¿Dónde está escrito en los documentos? – vfn

+2

"Asegúrese de detener las actualizaciones de ubicación en todas las instancias de CLLocationManager cuando su aplicación ya no lo necesite (es decir, en applicationWillResignActive :) para que el GPS se pueda apagar para ahorrar batería". El GPS solo continuará activo si configura su aplicación para recibir actualizaciones cuando está en segundo plano (solo iOS4); de lo contrario, el GPS se apagará si ninguna otra aplicación está solicitando la ubicación. La buena práctica es activar y desactivar el administrador de ubicación tan pronto como no necesite información de GPS, y no solo en applicationWillResignActive: Cambiar el "i.e." a "p. ej.", y lo arreglará. – vfn

+0

referencias reales o ejemplos del mundo real para respaldar esto o es solo su comprensión? –

Cuestiones relacionadas