当用户使用Fast App Switcher停止应用程序时停止CLLocationManager

时间:2012-05-05 17:22:21

标签: objective-c ios5 cllocationmanager xcode4.3 fast-app-switching

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

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

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

修改 当我将应用程序发送到后台时,它仍然应该得到significantLocationChanges,所以当应用程序被发送到后台时我不能停止CLLocationManager!

1 个答案:

答案 0 :(得分: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