iOS應(yīng)用程序生命周期

iOS應(yīng)用程序生命周期

App狀態(tài)變化歷史:

在iOS4之前的App時代,整個界面只允許一個App處于運(yùn)行狀態(tài),而當(dāng)某個App處于運(yùn)行狀態(tài)時意味著其他所有的App的活動都被終止并退出,無法接受任何事件.一個應(yīng)用的狀態(tài)轉(zhuǎn)換只有運(yùn)行衡创、退出之間的變換.在iOS4之后的iPhone進(jìn)入了多任務(wù)處理時代.也意味了當(dāng)從一個應(yīng)用切換到另一個應(yīng)用時,系統(tǒng)不會馬上將原來的應(yīng)用終止退出,將其狀態(tài)變成了suspend,而另一個應(yīng)用的狀態(tài)變成了running.

AppDelegate

運(yùn)行一個App,應(yīng)用程序會自動創(chuàng)建UIApplication單例對象,并被強(qiáng)引用(保證不會被銷毀直到App退出),其UIApplicaiton實(shí)例的delegate屬性被賦值為AppDelegate實(shí)例對象(其也是一個單例,也永遠(yuǎn)不會被釋放直到該App退出).而AppDelegate對象有著一系列在程序啟動時的跟蹤狀態(tài)變化,處理從其他應(yīng)用跳轉(zhuǎn)贪绘、啟動到此應(yīng)用,或者后臺運(yùn)行代碼的方法.

AppDelegate做為App的根對象的主要功能:

1. 運(yùn)行在啟動時自己用來初始化應(yīng)用的特點(diǎn)代碼.
2. 響應(yīng)App從啟動,到后臺,到前臺,到退出時各個狀態(tài)時的指定方法.
3. 負(fù)責(zé)處理接收推送通知或本地通知啟動App的情況,處理手機(jī)低內(nèi)存警告時的情況.
4. 負(fù)責(zé)處理應(yīng)用程序的狀態(tài)保存和恢復(fù).
5. 響應(yīng)由App處理的事件,而是指定控制器或視圖.
6. 處理數(shù)據(jù)的存儲.
應(yīng)用程序的狀態(tài):
1. Not running    未運(yùn)行     程序處于沒啟動狀態(tài)
2. Inactive     未激活 程序在前臺運(yùn)行, 但是沒有接收到任何事件, 沒有事件處理的情況下程序通常停留在這個狀態(tài)
3. Active           激活      程序在前臺運(yùn)行,并且接收到事件.
4. Background   程序在后臺且能執(zhí)行代碼      大多數(shù)程序進(jìn)入后臺這個狀態(tài)后會在這個狀態(tài)停留一會, 然后進(jìn)入Suspended(掛起狀態(tài)), 而有的程序經(jīng)過特殊的請求可以長期處于Background狀態(tài).   
5. Suspended         掛起    程序在后臺不能執(zhí)行代碼, 系統(tǒng)會自動將程序變成這個狀態(tài)且不會發(fā)通知. 當(dāng)掛起時, 程序還是停留在內(nèi)存中的, 當(dāng)系統(tǒng)內(nèi)存不足時,系統(tǒng)就會把掛起的程序清除掉, 為前臺程序提供更多內(nèi)存
程序狀態(tài)切換圖:
各個程序運(yùn)行狀態(tài) 代理的回調(diào)方法
- (void)applicationWillResignActive:(UIApplication *)application {
    // 當(dāng)應(yīng)用從activite狀態(tài)跳轉(zhuǎn)到inactive狀態(tài)時, 調(diào)用該方法. 許多的暫時打斷App操作都會觸發(fā)該方法. (諸如: 有電話打進(jìn)來時, 收到消息時, 支持多任務(wù)的iPad進(jìn)行側(cè)邊欄滑動時等情況) 或者當(dāng)用戶停止App并且讓App進(jìn)入后臺狀態(tài)時(Inactive狀態(tài))(如按Home鍵回到鍵入主界面,劃出通知欄或者設(shè)置)
    // 可以通過該方法停止進(jìn)行中的任務(wù), 讓定時器失效, 進(jìn)制圖形渲染回調(diào)方法. 游戲類App 用該方法停止游戲
}


- (void)applicationDidEnterBackground:(UIApplication *)application {
    // 該方法可以用來釋放共享的資源, 保存數(shù)據(jù), 停止定時器, 保存App當(dāng)前狀態(tài)信息防止App在之后被銷毀掉時, 丟失了信息
    // 如果你的App支持后臺運(yùn)行, 該方法將會在用戶觸發(fā)停止App操作時(如按Home鍵), 取代 applicationWillTerminate 
}


- (void)applicationWillEnterForeground:(UIApplication *)application {
    // 在App從background狀態(tài)跳轉(zhuǎn)到active狀態(tài)時該方法被執(zhí)行, 在這個方法中你可以撤銷任何在App進(jìn)入background狀態(tài)時所做的改變.
}


- (void)applicationDidBecomeActive:(UIApplication *)application {
    // 重啟那些在App處于inactive狀態(tài)時被停止的任務(wù)(或那些還未啟動的), 如果App之前處于background 狀態(tài),  通常要刷新UI
}


- (void)applicationWillTerminate:(UIApplication *)application {
    // App將要終止時被調(diào)用, 如果有必要可以保持一些數(shù)據(jù), 同時也要看看方法 applicationDidEnterBackground:
}

加載應(yīng)用程序進(jìn)入前臺:
加載應(yīng)用程序進(jìn)入后臺:
應(yīng)用返回前臺運(yùn)行:
應(yīng)用轉(zhuǎn)到后臺運(yùn)行:

當(dāng)一個基于警告式的中斷發(fā)生時,比如有電話打進(jìn)來了,這是程序會臨時進(jìn)入inactive狀態(tài),這用戶可以選擇如何處理這個中斷

響應(yīng)中斷:
Main Run Loop 處理時間的架構(gòu)圖:
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末竭宰,一起剝皮案震驚了整個濱河市羡微,隨后出現(xiàn)的幾起案子夕春,更是在濱河造成了極大的恐慌湃崩,老刑警劉巖荧降,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異攒读,居然都是意外死亡誊抛,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進(jìn)店門整陌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人瞎领,你說我怎么就攤上這事泌辫。” “怎么了九默?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵震放,是天一觀的道長。 經(jīng)常有香客問我驼修,道長殿遂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任乙各,我火速辦了婚禮墨礁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘耳峦。我一直安慰自己恩静,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布蹲坷。 她就那樣靜靜地躺著驶乾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪循签。 梳的紋絲不亂的頭發(fā)上级乐,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天,我揣著相機(jī)與錄音县匠,去河邊找鬼风科。 笑死撒轮,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的丐重。 我是一名探鬼主播腔召,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼扮惦!你這毒婦竟也來了臀蛛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤崖蜜,失蹤者是張志新(化名)和其女友劉穎浊仆,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體豫领,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡抡柿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了等恐。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片洲劣。...
    茶點(diǎn)故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖课蔬,靈堂內(nèi)的尸體忽然破棺而出囱稽,到底是詐尸還是另有隱情,我是刑警寧澤二跋,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布战惊,位于F島的核電站,受9級特大地震影響扎即,放射性物質(zhì)發(fā)生泄漏吞获。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一谚鄙、第九天 我趴在偏房一處隱蔽的房頂上張望各拷。 院中可真熱鬧,春花似錦闷营、人聲如沸撤逢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蚊荣。三九已至,卻和暖如春莫杈,著一層夾襖步出監(jiān)牢的瞬間互例,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工筝闹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留媳叨,地道東北人腥光。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像糊秆,于是被迫代替她去往敵國和親武福。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內(nèi)容