我正在开发一个使用CLLocationManager来获取GPS数据的iOS应用程序。
当用户按下主页按钮然后使用快速应用程序切换器杀死应用程序时,有什么方法可以停止CLLocationManager?
如何停止CLLocationManager然后停止轮询GPS数据?有没有人知道实现这一目标的好方法,因为通常我无法在用户杀死应用程序时执行任何代码....
修改 当我将应用程序发送到后台时,它仍然应该得到significantLocationChanges,所以当应用程序被发送到后台时我不能停止CLLocationManager!
答案 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