應用及視圖的生命周期
應用生命周期
- 從點擊iOS屏幕的應用圖標啟動應用開始,到應用完全退出內存為止,期間的所有應用程序行為
視圖生命周期
- 從視圖開始從
nib
文件或storyboard
文件中加載,到最后視圖從內存中卸載,期間的所有與視圖相關的行為
應用狀態
-
Not Running
- 應用未被啟動或被系統或用戶終止
-
Inactive
- 過渡狀態
- 處于前臺運行,但不能接收事件
-
active
- 正常狀態
- 能夠接收事件
- 沒有特別的約束
-
Background
- 會執行代碼,但應用不可見
- 處理如下載,定位,remote notification
-
Suspend
- 應用在內存,但沒有執行代碼
- 系統將沒有未完成任務的后臺程序置為
suspend
- 系統可能會在任意時刻將
Suspend
程序終止,以騰出空間給其他程序
-
狀態遷移
- State changes.png
隨狀態改變而調用的方法
- 啟動時 Launch time
-
application:willFinishLaunchingWithOptions:
用戶點擊圖標時調用,第一次可以添加代碼的地方 -
application:didFinishLaunchingWithOptions:
上面調用完后調用 - 應用生命周期內<em>只調用一次</em>
- 放置一次性的數據加載,初始化等操作,提高效率
-
- 轉向前臺 Transitioning to the foreground
applicationDidBecomeActive:
- 可能會多次被調用
- 用戶點擊
Home
鍵-
applicationWillResignActive:
離開前臺的時候就會調用 -
applicationDidEnterBackground:
進入后臺咯
-
- 用戶再次點擊應用圖標
-
applicationWillEnterForeground:
從后臺調出的時候就會調用 -
applicationDidBecomeActive:
變為活躍狀態
-
- 應用這次要被殺死累
applicationWillTerminate:
- 只有在應用處于運行狀態才會執行此方法
- 若程序處于
Suspend
狀態則不會調用 - 文檔如是說