2011-09-08 28 views
15

如何知道應用程序是否被用戶或iOS的結束時重新啓動應用程序>如何知道應用程序是否被用戶或iOS(10分鐘背景後)終止

「通過用戶」是指「通過雙擊主頁按鈕並按下 - 按鈕「。用戶

「通過iOS版」的手段殺死「應用程序成爲後臺運行狀態,而iOS 10分鐘後終止應用程序」

+2

爲什麼iOS會在後臺10分鐘後終止您的應用? – mayuur

+0

我想知道用戶是否殺了應用程序(通過點擊紅色' - '按鈕) – ChangUZ

回答

9

如果系統資源不足的iOS可能會終止你的應用程序 - 如果發生這種情況,你會看到applicationWillTerminate

它曾經是,如果用戶殺了應用程序(任務管理器,通過按鈕雙擊,然後點擊紅色' - ')這是一個SIGKILL和applicationWillTerminate不會被調用。 2013年年中的一份報告表明這一點已經改變,現在被稱爲applicationWillTerminate

您可以使用NSUserDefaults在applicationWillTerminate中寫入一些狀態位以指出此函數已被調用,並且可能是系統kill,而不是用戶kill。

+2

關於:「如果用戶殺死應用程序(任務管理器,通過按鈕雙擊然後點擊紅色' - ')它是不會調用SIGKILL和applicationWillTerminate。「 請注意,此行爲可能在某些時候發生了變化。我的團隊中的另一位開發人員剛剛測試了這個,並報告說在這種情況下調用了applicationWillTerminate。 –

+0

謝謝史蒂夫,總是很好地保持這些答案的更新。 –

+2

剛剛通過調試器進行了測試:applicationWillTerminate被調用,但並非沒有調試器(使用運行iOS 7.1的iPhone5的Xcode控制檯日誌) –

10

如果您的應用處於掛起狀態的applicationWillTerminate永遠不會不管叫誰殺死了應用的iOS或用戶。

您的applicationWillTerminate只會在您的應用程序處於後臺並且被殺死(iOS或用戶)時調用,術語背景意味着它在後臺運行而不處於掛起狀態。

剛看完this reference

applicationWillTerminate:-Lets你知道你的應用程序被終止。如果您的應用已被暫停,則不會調用此方法。

下面是各種狀態 enter image description here

背景的表 - 應用程序在背景中和執行代碼。大多數應用程序在進入暫停狀態時會暫時進入此狀態。但是,請求額外執行時間的應用可能會保持一段時間。另外,直接在後臺啓動的應用程序將進入此狀態而不是非活動狀態。有關如何在後臺執行代碼的信息,請參閱後臺執行。

+1

該線程的最清晰答案。謝謝! –

相關問題