我正在寫一個應用程序運行在後臺模式,可以跟蹤用戶(所以有時更新位置在後臺模式),並通過使用區域監控,通知他的附近點。我不使用重新啓動區域監視應用程序的功能。applicationDidEnterBackground後applicationWillTermimate應用程序與背景位置模式
當前,獲取applicationWillTerminate:
消息後,我停止位置更新並刪除區域監視的所有點。我注意到應用程序的奇怪行爲。以下消息(按順序如下圖所示)正試圖殺死它在多任務菜單後,交付給應用程序:
applicationWillTerminate:
applicationDidEnterBackground:
- (有時)多了一個
locationManager:didUpdateToLocation:fromLocation:
如果我沒有爲這個應用程序註冊後臺定位模式,它只是被殺死。
我想要應用程序終止像其他應用程序後,用戶在多任務菜單中殺死它,而不是從區域監控(沒有點在那個時刻跟蹤)消息。不過,我需要能夠使用後臺定位模式。目的是儘量減少電池的使用。我該怎麼做才能做到這一點?
此外,爲什麼申請在applicationWillTerminate:
之後收到applicationDidEnterBackground:
?從多任務菜單關閉後它仍在運行嗎?
問題是應用程序在'applicationWillTerminate:'之後運行。之後,調用'applicationDidEnterBackground:'。問題是何時(如果曾經)它被殺死。 另外,我想在用戶「殺死」應用程序時停止監視區域,所以我不能在'applicationDidEnterBackground:'中執行。 – Xilexio
根據iOS 4.0及更高版本的文檔,您的應用程序在applicationDidEnterBackground後清除,請參閱此處的文檔:http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIApplicationDelegate_Protocol/Reference/Reference .html –
它只聲明應用程序可能在'applicationDidEnterBackground:'後終止。例如,如果我使用區域監視,它將使用'application:didFinishLaunchingWithOptions:'與選項'UIApplicationLaunchOptionsLocationKey'一起運行。由於我沒有使用它的功能來喚醒跨越區域邊界的應用程序,因此我預計它會關閉或者至少不會耗盡電池。但是,當我檢查系統控制檯應用程序時,我的應用程序沒有被髮送kill(9)信號,而沒有設置後臺模式,它被終止。 – Xilexio