在后台运行的标准位置服务的iOS 4应用程序生命周期行为

时间:2011-06-08 20:00:20

标签: iphone ios gps cllocationmanager

我正在开发一个位置跟踪应用程序,该应用程序在后台使用标准位置服务和重要的更改位置服务(我的应用程序已在iOS 4+中注册了背景位置更新)。感谢this question我对背景状态的重大变化以及终止状态的重新启动有了深刻的理解。但是,我仍然不清楚标准位置服务在这些实例中的表现。有人可以打破在后台运行的标准位置服务的确切行为吗? 具体做法是:

  1. 标准位置服务在您保持运行且应用程序暂停到后台时的行为如何?从我自己的测试中,我已经看到它将继续唤醒以接收locationManager:didUpdateToLocation:fromLocation:上的回调(我将它发送到套接字,我可以在网络上看到它)。此回调是否有时间或内存限制来处理?
  2. 即使我的应用终止,标准位置服务是否仍然继续运行?也就是说,它会以application:didFinishLaunchingWithOptions:与重要变更服务的方式重新启动UIApplicationLaunchOptionsLocationKey吗?我认为在这种情况下,CLLocationManager也需要重新启动,因为重要的变更服务会这样做。
  3. 感谢。

1 个答案:

答案 0 :(得分:3)

回答1& 2,如果您已将应用程序注册为使用后台位置,则您的应用程序不会被终止并继续在后台运行,直到您执行此操作:

[locationManager stopUpdatingLocation];

因此,没有时间或内存限制但是有电池限制。如果您的电池电量不足,则所有使用gps的应用都将关闭。由于您的应用程序在正常情况下未被终止,因此不需要或不会重新启动(在终止电池电量后)UIApplicationLaunchOptionsLocationKey

标准和重要服务在这种方式上有所不同,当有位置更新但标准使应用程序连续运行并因此耗尽电池时,显着唤醒应用程序。

在选择使用哪种服务之前,请考虑阅读Location-Awareness Programming guide.