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

iOS的應(yīng)用程序的生命周期挽牢,還有程序是運(yùn)行在前臺(tái)還是后臺(tái)登渣,應(yīng)用程序各個(gè)狀態(tài)的變換,這些對(duì)于開(kāi)發(fā)者來(lái)說(shuō)都是很重要的邓了。 iOS系統(tǒng)的資源是有限的恨诱,應(yīng)用程序在前臺(tái)和在后臺(tái)的狀態(tài)是不一樣的。在后臺(tái)時(shí)骗炉,程序會(huì)受到系統(tǒng)的很多限制照宝,這樣可以提高電池的使用和用戶體驗(yàn)。
開(kāi)發(fā)app,我們要遵循apple公司的一些指導(dǎo)原則句葵,原則如下:

應(yīng)用程序的狀態(tài)
狀態(tài)如下:
Not running 未運(yùn)行 程序沒(méi)啟動(dòng)
Inactive 未激活 程序在前臺(tái)運(yùn)行厕鹃,但不能接受事件的處理.當(dāng)應(yīng)用要從一個(gè)狀態(tài)切換到另一個(gè)不同狀態(tài)時(shí),中途 過(guò)度會(huì)短暫停留在此狀態(tài).
Active 激活 程序在前臺(tái)運(yùn)行而且接收到了事件。這是應(yīng)用在前臺(tái)運(yùn)行時(shí)所處的正常狀態(tài).
Backgroud 后臺(tái) 程序在后臺(tái)而且還在執(zhí)行代碼.大多數(shù)將要進(jìn)入 Suspended 狀態(tài)的應(yīng)用,會(huì)先短暫進(jìn)入此狀態(tài).如果應(yīng)用請(qǐng)求更多額外的執(zhí)行時(shí)間,該應(yīng)用會(huì)在此狀態(tài)保持更長(zhǎng)一段時(shí)間.另外,如果一個(gè)應(yīng)用要求啟動(dòng)時(shí)直接進(jìn)入后臺(tái)運(yùn)行,這樣的應(yīng)用會(huì)直接從 NotRunning 狀態(tài)進(jìn)入 Background 狀態(tài),中途不會(huì)經(jīng)過(guò) Inactive 狀態(tài).比如,沒(méi)有界面的應(yīng)用(當(dāng)然并不特指沒(méi)有界面的應(yīng)用),總之,如果應(yīng)用直接進(jìn)入 Background 狀態(tài),該應(yīng)用界面不會(huì)被顯示出來(lái).
Suspended 掛起 應(yīng)用處在后臺(tái),并且沒(méi)有執(zhí)行任何代碼.系統(tǒng)會(huì)自動(dòng)將應(yīng)用轉(zhuǎn)入該狀態(tài),并且不會(huì)發(fā)出任何通知.當(dāng)處在該狀態(tài)時(shí),應(yīng)用依然駐留內(nèi)存,但不執(zhí)行任何程序代碼.當(dāng)系統(tǒng)發(fā)生低內(nèi)存警告時(shí),系統(tǒng)會(huì)將出于 Suspended 狀態(tài)的應(yīng)用徹底移出內(nèi)存,從而為前臺(tái)應(yīng)用釋放更多的內(nèi)存.
下圖是程序狀態(tài)變化圖:


各個(gè)程序運(yùn)行狀態(tài)時(shí)代理的回調(diào):

- (BOOL)application:(UIApplication*)application willFinishLaunchingWithOptions:(NSDictionary*)launchOptions// 告訴代理進(jìn)程啟動(dòng)但還沒(méi)進(jìn)入狀態(tài)保存.  應(yīng)用程序?qū)⒁獑?dòng)時(shí)自動(dòng)調(diào)用該方法,該方法是應(yīng)用程序啟動(dòng)時(shí)第一次執(zhí)行自定義代碼的機(jī)會(huì).
- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions// 告訴代理啟動(dòng)基本完成程序準(zhǔn)備開(kāi)始運(yùn)行.  應(yīng)用程序啟動(dòng)時(shí)自動(dòng)調(diào)用該方法,開(kāi)發(fā)者可以在該方法中執(zhí)行初始化相關(guān)的代碼.
- (void)applicationDidBecomeActive:(UIApplication*)application//應(yīng)用程序入活動(dòng)狀態(tài)執(zhí)行.    應(yīng)用在轉(zhuǎn)入前臺(tái),并進(jìn)入活動(dòng)狀態(tài)時(shí)回調(diào)該方法(當(dāng)應(yīng)用從啟動(dòng)到進(jìn)入前臺(tái),或從后臺(tái)轉(zhuǎn)入前臺(tái)都會(huì)調(diào)用該方法),可重寫(xiě)該方法執(zhí)行最后的準(zhǔn)備工作.
- (void)applicationWillResignActive:(UIApplication*)application// 當(dāng)應(yīng)用程序?qū)⒁敕腔顒?dòng)狀態(tài)執(zhí)行(應(yīng)用正要從前臺(tái)運(yùn)行狀態(tài)離開(kāi)時(shí)將會(huì)調(diào)用該方法)乍丈,在此期間剂碴,應(yīng)用程序不接收消息或事件,比如來(lái)電話了
- (void)applicationDidEnterBackground:(UIApplication*)application// 用程序正出于 Background 狀態(tài),且隨時(shí)可能進(jìn)入Suspended 狀態(tài)時(shí)將會(huì)調(diào)用該方法.  所以要設(shè)置后臺(tái)繼續(xù)運(yùn)行诗赌,則在這個(gè)函數(shù)里面設(shè)置即可
- (void)applicationWillEnterForeground:(UIApplication*)application//當(dāng)程序從后臺(tái)將要重新回到前臺(tái)汗茄,但暫時(shí)還沒(méi)有到達(dá) Active 狀態(tài)時(shí)將會(huì)調(diào)用該方法.  這個(gè)剛好跟上面的那個(gè)方法相反。
- (void)applicationWillTerminate:(UIApplication*)application//該應(yīng)用程序即將被終止時(shí)調(diào)用該方法,如果應(yīng)用當(dāng)前處在 Suspended 狀態(tài),此方法將不會(huì)被調(diào)用..通常是用來(lái)保存數(shù)據(jù)和一些退出前的清理工作铭若。這個(gè)需要要設(shè)置UIApplicationExitsOnSuspend的鍵值洪碳。
- (void)applicationDidFinishLaunching:(UIApplication*)application當(dāng)程序載入后執(zhí)行

在上面8個(gè)方法對(duì)應(yīng)的方法中鍵入NSLog打印递览。
現(xiàn)在啟動(dòng)程序看看執(zhí)行的順序:
啟動(dòng)程序

lifeCycle[40428:11303] willFinishLaunchingWithOptions
lifeCycle[40428:11303] didFinishLaunchingWithOptions
lifeCycle[40428:11303] applicationDidBecomeActive

按下home鍵

lifeCycle[40428:11303] applicationWillResignActive
lifeCycle[40428:11303] applicationDidEnterBackground

雙擊home鍵,再打開(kāi)程序

lifeCycle[40428:11303] applicationWillEnterForeground
lifeCycle[40428:11303] applicationDidBecomeActive
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末瞳腌,一起剝皮案震驚了整個(gè)濱河市绞铃,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌嫂侍,老刑警劉巖儿捧,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異挑宠,居然都是意外死亡菲盾,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)各淀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)懒鉴,“玉大人,你說(shuō)我怎么就攤上這事碎浇×倨祝” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵奴璃,是天一觀的道長(zhǎng)悉默。 經(jīng)常有香客問(wèn)我,道長(zhǎng)苟穆,這世上最難降的妖魔是什么游两? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任带欢,我火速辦了婚禮碟绑,結(jié)果婚禮上抛猖,老公的妹妹穿的比我還像新娘。我一直安慰自己岭辣,他們只是感情好吱晒,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著沦童,像睡著了一般仑濒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上偷遗,一...
    開(kāi)封第一講書(shū)人閱讀 51,482評(píng)論 1 302
  • 那天墩瞳,我揣著相機(jī)與錄音,去河邊找鬼氏豌。 笑死喉酌,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播泪电,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼般妙,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了相速?” 一聲冷哼從身側(cè)響起碟渺,我...
    開(kāi)封第一講書(shū)人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎突诬,沒(méi)想到半個(gè)月后苫拍,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡旺隙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年绒极,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片催束。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡集峦,死狀恐怖伏社,靈堂內(nèi)的尸體忽然破棺而出抠刺,到底是詐尸還是另有隱情,我是刑警寧澤摘昌,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布速妖,位于F島的核電站,受9級(jí)特大地震影響聪黎,放射性物質(zhì)發(fā)生泄漏罕容。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一稿饰、第九天 我趴在偏房一處隱蔽的房頂上張望锦秒。 院中可真熱鬧,春花似錦喉镰、人聲如沸旅择。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)生真。三九已至,卻和暖如春捺宗,著一層夾襖步出監(jiān)牢的瞬間柱蟀,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工蚜厉, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留长已,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像术瓮,于是被迫代替她去往敵國(guó)和親胶果。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

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