我的新“进行中的应用程序”出于多种目的使用 CLLocationManager 的实例。为了使应用程序尽可能对电池友好,定位服务应仅在需要时激活,并在数据刷新完成后立即停用。出于我的目的,在 10 秒内仅获取一次位置数据就足够了。(尚未确定确切的间隔长度)。
我的问题是,“关闭定位服务”最省电的方法是什么?仅使用“stopUpdatingLocation”方法并将 CLLocationManager 自己保留在内存中是否足够,或者我是否需要释放整个实例,并在下次刷新之前分配一个新实例?
我的新“进行中的应用程序”出于多种目的使用 CLLocationManager 的实例。为了使应用程序尽可能对电池友好,定位服务应仅在需要时激活,并在数据刷新完成后立即停用。出于我的目的,在 10 秒内仅获取一次位置数据就足够了。(尚未确定确切的间隔长度)。
我的问题是,“关闭定位服务”最省电的方法是什么?仅使用“stopUpdatingLocation”方法并将 CLLocationManager 自己保留在内存中是否足够,或者我是否需要释放整个实例,并在下次刷新之前分配一个新实例?
我同意与andstopUpdatingLocation
相结合的其他答案是要走的路。请注意,当所需的精度在公里范围内时,位置管理器甚至可能不必启动 GPS。distanceFilter
desiredAccuracy
同样,根据您的用途,查看区域监控和重要的位置更新,因为它们对电池更友好。
是的。打电话stopUpdatingLocation
就够了。
更好的方法是为distanceFilter
和设置好的值desiredAccuracy
。10 秒不足以预热 GPS。
设置得当distanceFilter
,desiredAccuracy
可能是对电池寿命影响最大的两个因素。
要真正知道什么是最省电的,您应该使用 Instruments 并测量设备上的电池消耗。为此有一个内置工具。