2011-02-01 43 views
1

我已閱讀關於應用生命週期的Apple的documentation,並進行了一些測試以確定不同設備上的應用生命週期。 (除了2G所有運行iOS 4.x的)iOS應用生命週期4/3GS/iPad與2G/3G

我測試過的 「多任務」 功能的設備VS一些不支持此功能:

iPhone 2G/3G的應用程序生命週期:

(START) 
- didFinishLunchingWithOptions 
- applicationDidBecomeActive 

(HOME PRESSED) 
- applicationDidEnterBackground 
- appWillTerminate 

的iPad/iPhone 4應用程序生命週期:

(START) 
- didFinishLunchingWithOptions 
- applicationDidBecomeActive 

(HOME PRESSED) 
- appWillResignActive 
- appDidEnterBackGround 

(RESART app in the "Taskbar") 
- appWillEnterForeGround 
- appDidBecomeActive 

我試圖從「任務欄」,但調試器收到SIGKILL殺應用程序!當你以這種方式殺人和應用時會發生什麼?

appWillTerminate何時調用「多任務」設備?我的結果是否正確?

編輯:

對於支持後臺運行的應用程序,這種方法一般是不會當用戶退出應用程序,因爲應用程序只需移動到背景名爲:從蘋果的約appWillTerminate文檔

報價在這種情況下。但是,在應用程序在後臺運行(未掛起)並且系統因某種原因需要終止應用程序的情況下,可能會調用此方法。

它們是什麼意思「一般不叫」。 「系統需要終止它..」意味着將調用方法appWillTerminate

回答

1

我認爲你是對的。當你從任務欄中殺死一個應用程序(或者當你的設備內存不足並且操作系統爲你殺死了該應用程序)時,它只會發送一個SIGKIL信號。正如你注意到的,它從來不會調用任何回調函數。

According to the documentation

對於支持 後臺執行應用中,這種方法是 當用戶 退出應用程序,因爲 應用簡單地移動到在這種情況下,背景 通常不被調用。但是,此方法可能會在 的情況下調用,其中應用程序在 中運行的背景(未暫停)和 系統需要終止某些 原因。

那麼,iOS的可以調用applicationWillTerminate:方法,但可能不會。 (我從來沒有見過)

如果您想在應用程序被殺之前保存任何狀態,則需要在進入後臺時執行此操作。

+0

好的,謝謝你回答大部分問題。但是什麼時候appWillTerminate在「多任務」設備上調用? – Kami 2011-02-01 11:48:21