方法 | 本地通知 | 說明 |
---|---|---|
application:didFinishLaunchingWithOptions: | UIApplicationDidFinishLaunchingNotification | 應用啟動並進行初始化時會呼叫該方法併發出通知。這個階段會例項化根檢視控制器 |
applicationDidBecomeActive: | UIApplicationDidBecomeActiveNotification | 應用進入前臺並處於活動狀態時呼叫該方法併發出通知。這個階段可以恢復UI狀態(例如遊戲狀態) |
applicationWillResignActive: | UIApplicationWillResignActiveNotification | 應用從活動態進入非活動態時呼叫該方法併發出通知。這個階段可以儲存UI的狀態(例如遊戲狀態) |
applicationDidEnterBackground: | UIApplicationDidEnterBackgroundNotification | 應用進入後臺時呼叫該方法併發出通知,這個階段可以儲存使用者資料,釋放一些資源(一些可重新載入的圖片等資源) |
applicationWillEnterForeground: | UIApplicationWillEnterForegroundNotification | 應用進入前臺,但是還沒有處於活動狀態時呼叫該方法併發出通知。這個階段可以恢復使用者資料 |
applicationWillTerminate: | UIApplicationTerminateNotification | 應用被終止時呼叫該方法併發出通知。這個階段釋放一些資源,也可以儲存使用者資料 |
當產生中斷時,App應該在applicationWillResignActive:
方法中:
- 停止timer 和其他週期性的任務
- 停止任何正在執行的請求
- 暫停視訊的播放
- 如果是遊戲那就暫停它
- 減少OpenGL ES的幀率 掛起任何分發的佇列和不重要的操作佇列(你可以繼續處理網路請求或其他時間敏感的後臺任務)。 當程式回到active狀態 , applicationDidBecomeActive: 方法應該上面提到的任務重新開始,比如重新開始timer, 繼續分發佇列,提高OpenGL ES的幀率。不過遊戲要回到暫停狀態,不能自動開始。
當App進入後臺時,應當:
- 儲存使用者資料或狀態資訊,所有沒寫到磁碟的檔案或資訊,在進入後臺時,最後都寫到磁碟去,因為程式可能在後臺被殺死,
- 釋放盡可能釋放的記憶體
應用進入後臺後如果沒有設定在後臺執行的話,5s後將會掛起,掛起的App仍將在記憶體中,
但當系統記憶體較低時,將會終止一些掛起的程式來回收記憶體。那些記憶體最大的程式首先被終止。
因此當App進入後臺後應儘可能的釋放記憶體
複製程式碼
非執行狀態-應用啟動場景
點選home鍵-應用退出場景
應用可以在後臺執行或掛起的情況:
應用不可以在後臺執行:
掛起重新執行的場景
應用進入後臺後如果沒有設定在後臺執行的話,5s後將會掛起,掛起的App仍將在記憶體中,但當系統記憶體較低時,將會終止一些掛起的程式來回收記憶體。