1

我正在开发一个使用 CLLocationManager 获取 GPS 数据的 iOS 应用程序。

当用户按下主页按钮然后使用快速应用程序切换器杀死应用程序时,停止 CLLocationManager 的正确方法是什么?

如何停止 CLLocationManager 然后停止轮询 GPS 数据?有谁知道实现这一目标的好方法,因为通常当用户杀死应用程序时我无法执行任何代码......

编辑: 当我将应用程序发送到后台时,它仍然应该得到显着的LocationChanges,所以当应用程序发送到后台时我无法停止 CLLocationManager!

4

1 回答 1

1

在 AppDelegate 中有一个名为 applicationWillResignActive 的方法。此方法在您的应用即将发送到后台时运行。如果您可以从 AppDelegate 访问 CLLocationManager,您可以在此处停止它。否则,您可以从 applicationWillResignActive 发布通知,并且任何具有 CLLocationManager 的类都可以订阅该通知并从那里处理它。

像这样发布通知:

[[NSNotificationCenter defaultCenter] postNotificationName:@"appWillResignActive" object:nil];

并像这样订阅:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleResign:) name:@"appWillResignActive" object:nil];

然后是这样的一些方法:

- (void)handleResign: (NSNotification *)notification
{
    // stop CLLocationManager
}

编辑:如果您想在应用程序被终止时运行代码,那么您可以在 AppDelegate 的此方法中运行该代码:

- (void)applicationWillTerminate:(UIApplication *)application
于 2012-05-05T17:58:48.503 回答