在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
你不需要发表您自己的通知,如果不是应用程序委托其他类需要应对这些事件:看到UIApplicationWillResignActiveNotification 等。 – rickster
SteveB,rickster - 我刚刚编辑了我的文章,因为我还需要在应用程序处于后台时进行位置更改,因此在进入后台时无法停止CLLocationManager。无论如何谢谢你的回答! – joshi737
所以你只想停止当用户手动杀死应用程序?发生这种情况时,应用程序中的所有代码都应停止运行。这就是杀死它的一点。那时你甚至可以确认事情还在发生?你是否输出日志文件并在应用程序被杀后看到活动? – SteveB