【问题标题】:Is there any performance penalty for using multiple CLLocationManager instances使用多个 CLLocationManager 实例是否有任何性能损失
【发布时间】:2011-04-06 14:00:14
【问题描述】:

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

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

【问题讨论】:

    标签: iphone core-location cllocationmanager


    【解决方案1】:

    我会说不,这不会是问题或性能损失。在一个应用程序中拥有多个 CLLocationManager 实例并不比在后台拥有多个应用程序都使用 CLLocationManager 更昂贵。操作系统根据所有 CLLocationManager 的组合请求配置 GPS/小区无线电以实现最低功耗。

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

    【讨论】:

    • “操作系统根据所有 CLLocationManager 的组合请求配置 GPS/蜂窝无线电以实现最低功耗。”文档上哪里写的?
    • “当您的应用不再需要它时,请务必停止所有 CLLocationManager 实例上的位置更新(即:在 applicationWillResignActive: 中),以便可以关闭 GPS 以节省电池。”仅当您将应用程序配置为在后台接收更新(仅限 iOS4)时,GPS 才会继续激活,否则如果没有其他应用程序请求位置,则 GPS 将关闭。好的做法是在不需要 GPS 信息时立即停止位置管理器,而不仅仅是在 applicationWillResignActive: 上。改变“即”到“例如”,你会修复它。
    • 任何实际的参考资料或现实世界的例子来支持这一点,或者这只是你的理解?
    • @Paul:我在 iTunes 商店中有一个基于位置的应用程序,在发布之前进行了广泛的测试和测量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-27
    • 1970-01-01
    • 1970-01-01
    • 2018-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多