記錄一個菜鳥的iOS學習之旅,如能幫助正在學習的你,亦楓不勝榮幸;如路過的大神如指教幾句,亦楓感激涕淋!
在上一節中,我們在剖析iOS工程項目結構時,提到了AppDelegate這個類。作為應用程序委托對象,AppDelegate類會在iOS應用的不同生命周期階段調用不同的方法,供開發人員處理相應的事件。在介紹這些方法之前,我們先通過一張圖看一下iOS應用的不同生命周期狀態和彼此之間的關系:
iOS應用生命周期.png
Not Running
非運行狀態。應用沒有運行或被系統終止;Inactive
前臺非活動狀態。應用正在進入前臺狀態,但是還不能接受事件處理;Active
前臺活動狀態。應用進入前臺狀態,能接受事件處理;Background
后臺狀態。應用進入后臺后,依然能夠執行代碼。如果有可執行的代碼,就會執行代碼,如果沒有可執行的代碼或者將可執行的代碼執行完畢,應用會馬上進入掛起狀態;Suspended
掛起狀態。處于掛起的應用進入一種“冷凍”狀態,不能執行代碼。如果系統內存不夠,應用會被終止;
以上便是五種iOS應用的不同生命周期狀態,在應用的使用過程中,會依據實際的使用場景,出現對應的生命周期狀態躍遷的變化。
在上述五種應用生命周期狀態躍遷的過程中,iOS系統回回調應用程序委托對象AppDelegate類中的不同方法,同時發送相應的通知。這里,我們通過圖表列舉一些主要的方法供大家參考:
應用狀態躍遷對應事件.png
大家可以在AppDelegate類中的不同方法下添加輸出日志的代碼,通過點擊桌面圖標、操作Home鍵等方式模擬應用啟動、應用退出等不同場景,查看日志輸出信息,以此加深對不同場景下各個生命周期狀態躍遷過程的理解。