我正在开发一个位置跟踪应用程序,该应用程序在后台使用标准位置服务和重要的更改位置服务(我的应用程序已在iOS 4+中注册了背景位置更新)。感谢this question我对背景状态的重大变化以及终止状态的重新启动有了深刻的理解。但是,我仍然不清楚标准位置服务在这些实例中的表现。有人可以打破在后台运行的标准位置服务的确切行为吗? 具体做法是:
locationManager:didUpdateToLocation:fromLocation:
上的回调(我将它发送到套接字,我可以在网络上看到它)。此回调是否有时间或内存限制来处理?application:didFinishLaunchingWithOptions:
与重要变更服务的方式重新启动UIApplicationLaunchOptionsLocationKey
吗?我认为在这种情况下,CLLocationManager
也需要重新启动,因为重要的变更服务会这样做。感谢。
答案 0 :(得分:3)
回答1& 2,如果您已将应用程序注册为使用后台位置,则您的应用程序不会被终止并继续在后台运行,直到您执行此操作:
[locationManager stopUpdatingLocation];
因此,没有时间或内存限制但是有电池限制。如果您的电池电量不足,则所有使用gps的应用都将关闭。由于您的应用程序在正常情况下未被终止,因此不需要或不会重新启动(在终止电池电量后)UIApplicationLaunchOptionsLocationKey
标准和重要服务在这种方式上有所不同,当有位置更新但标准使应用程序连续运行并因此耗尽电池时,显着唤醒应用程序。
在选择使用哪种服务之前,请考虑阅读Location-Awareness Programming guide.