2011年7月20日 星期三

iOS 的 App Life Cycle

Apple Dev 講 iOS app 生命週期的文章在此:
The Core Application Design
iOS 的 App Life Cycle 比 Android Activity Life Cycle 簡單一點。
iOS 4 之前不支援背景多工時超單純,application delegate function被呼叫的順序如下:
1. 點選 app icon 啓動 app時
application:didFinishLaunchingWithOptions:
applicationDidBecomeActive:
2. 按下 Home 鍵返回桌面時
applicationWillTerminate:
真是簡單到不行了。
iOS 4 支援背景之後,按下 Home 鍵並不會結束 app 而是放入背景,接著進入 suspended 狀態,先不論多工 app 如 voip 或 media player 之類的,ㄧ般的 app delegate function 的呼叫情形大致上是:
1.  點選 icon 啓動 app
application:didFinishLaunchingWithOptions:
applicationDidBecomeActive:
2. 按下 Home 鍵返回桌面時
applicationWillResignActive:
applicationDidEnterBackgroud:
3. 再由桌面按 icon 返回 app
applicationWillEnterForegroud:
applicationDidBecomeActive:
基本上如此循環。iOS 4 原則上不會呼叫 applicationWillTerminate,只有當 app 跑在背景(非 suspended) 又忽然被中止的時候才會 call。點兩下 Home 鍵把 suspended apps 清除的時候並不會呼叫這個 function。