在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