2010-09-01 24 views
13

我的应用程序中至少有两个控制器,当前使用他们自己的CLLocationManager实例。我很好奇,但是如果使用多个实例实际上给手机带来了额外的负担 - 超出了不同实例的额外内存。使用多个CLLocationManager实例有没有任何性能损失

iPhone会多次Ping GPS硬件,还是使用某种分派方式,以便硬件被抽象化并转发给所有听众?我正要编写自己的抽象层来处理多个观察者,但是想要检查是否有任何知识表明它不是必需的。

回答

10

我会说不,这不会是一个问题或性能损失。在一个应用程序中拥有多个CLLocationManager实例不会比使用CLLocationManagers在后台运行多个应用程序更昂贵。基于所有CLLocationManagers的组合请求,OS将GPS /小区无线电配置为最小功率使用。

当您的应用程序不再需要它时,请务必停止所有CLLocationManager实例的位置更新(即:在applicationWillResignActive :)中,以便可以关闭GPS h/w以节省电量。

+2

“OS根据所有CLLocationManagers的组合请求,配置GPS /小区无线电以实现最低功耗。”它在文档上写在哪里? – vfn 2010-09-01 02:07:42

+2

“当您的应用程序不再需要它时,请务必在所有CLLocationManager实例上停止位置更新(即:在applicationWillResignActive :)中,以便可以关闭GPS以节省电池。”如果您将应用配置为在后台(仅限iOS4)中接收更新,GPS将只会继续保持活动状态,否则如果没有其他应用程序要求定位,GPS将关闭。最好的做法是在不需要GPS信息时立即停止位置管理器,而不仅仅是在applicationWillResignActive:上。改变“即”到“例如”,你会修复它。 – vfn 2010-09-01 02:13:00

+0

任何实际的参考或现实世界的例子来支持这或你只是这样理解? – 2010-09-01 03:05:39

相关问题