UIApplication Delegate消息

在UIApplication的狀態轉換過程中根據不同的情況會發送不同的Delegate消息,下面主要描述UIApplication狀態轉換的各種情況以及發送哪些Delegate消息及消息的順。

首先將涉及到UIApplication狀態轉換的Delegate消息編號如下:

1、application:didFinishLaunchingWithOptions:

2、application:openURL:sourceApplication:annotation:

3、applicationDidBecomeActive:

4、applicationWillResignActive:

5、applicationDidEnterBackground:

6、applicationWillEnterForeground:

7、applicationWillTerminate:

則對于下面各種操作Delegate消息的發送順序為

1、通過SpringBoard第一次啟動,消息順序為1-3

2、通過URL第一次啟動,消息順序為1-2-3

3、運行過程中按Home鍵,消息順序為 4-5

? ? 若為iOS4.0以下或者Info.plist中設置了UIApplicationExitsOnSuspend,則繼續發送消息7,然后程序終止;

? ? 否則根據程序設置進入Background運行模式或者Suspend狀態。

4、運行過程中按鎖屏鍵,消息順序與按Home鍵相同,區別在于此時會關閉所有網絡連接(iOS5.0+)

5、運行過程中被短信/電話等中斷,則發送消息 4

? ? 若用戶選擇短信/電話,則發送消息 5,后續流程與按Home鍵相同。

? ? 若用戶忽略短信/電話,則發送消息 3,回到Foreground運行狀態。

6、運行過程中雙擊Home鍵顯示任務切換器,會發送消息 4

? ? 若選擇其他程序或者單擊Home鍵返回到SpringBoard,則發送消息 5,后續流程與按Home鍵相同。

? ? 若再次雙擊Home鍵返回APP,則發送消息 3,回到Foreground運行狀態。

7、通過SpringBoard或者任務切換器再次啟動時,消息順序為6-3.

從后臺重新返回前臺的轉換過程中,即6與3消息的中間,在5.1的模擬器中顯示的是Default.png,但在真實設備上顯示的進入后臺的screenshot。

8、通過URL再次啟動時,消息順序6-2-3.

9、程序在Background/Suspend狀態時,用戶雙擊Home鍵。

? ? 如果程序同時啟用了Required background modes,比如App plays audio,此時如果程序home到后臺,并且正在播放音樂,此時用戶手動/自動中止程序是會觸發applicationWillTerminate:的。如果你使用了后臺任務處理beginBackgroundTaskWithExpirationHandler也是同樣道理。

? ? 如果程序在后臺時app并沒有后臺任務執行,則會進入Suspend,此時手動/自動中止程序則不會觸發applicationWillTerminate:的。

10、當程序在Suspend狀態時,若內存緊張,系統也會將程序立即終止以回收內存,此時也不會有任何消息發送。

總結:

1、程序在Suspend狀態被中止時不會觸發applicationWillTerminate:

2、程序在Background狀態并且有后臺任務執行時被中止則會觸發applicationWillTerminate:

所以對于需要在程序退出時保存數據,狀態等的需求,最好在applicationDidEnterBackground:以及applicationWillTerminate:例都做處理。

二.狀態轉換廣播通知

以上消息只會發給AppDelegate,如果想在UIViewController中監聽UIApplication的狀態變化,可以監聽以下通知

UIApplicationDidBecomeActiveNotification(iOS2.0+)

UIApplicationDidEnterBackgroundNotification(iOS4.0+)

UIApplicationWillEnterForegroundNotification(iOS4.0+)

UIApplicationWillResignActiveNotification(iOS2.0+)

UIApplicationWillTerminateNotification(iOS2.0+)

使用下面代碼可獲取當前Application的運行狀態

[UIApplication sharedApplication].applicationState

狀態包括UIApplicationStateActive? ?UIApplicationStateInactive? ?UIApplicationStateBackground

當APP在某個UIViewController顯示時進入后臺或者從后臺返回到前臺時,并不會調用viewWillDisappear:,viewDidDisappear:viewWillAppear:viewDidAppear:系列方法,但此時的視圖確實發生Disappear以及Appear的事件。

如果在這種情況下需要做些處理的話,可以在viewDidAppear:中注冊對上述通知的監聽,在接收到APP進入后臺以及從后臺返回時通知時做相應的處理。在viewWillDisappear:中我們可以取消對上述通知的監聽,因為如果當前顯示的不是此視圖,就沒有Disappear以及Appear的事件發生,也就不需要在前后臺切換時做任何特殊處理。

需要這樣做的情況有:

在View Appear時需要重新請求數據時;

當視圖包含動畫,在進入后臺模式時動畫會停止,返回到前臺時需要重新啟動動畫時;

三.CoreLocation 更新消息

如果使用CoreLocation,當程序運行在Background模式下出現位置更新時,還有特殊的消息需要處理,見CoreLocation Background Update Messaging

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,702評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,143評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,553評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,620評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,416評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,940評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,024評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,170評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,709評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,597評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,784評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,291評論 5 357
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,029評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,407評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,663評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,403評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,746評論 2 370

推薦閱讀更多精彩內容