第一個項(xiàng)目之二--應(yīng)用的生命周期

建好項(xiàng)目之后


onLeft

在項(xiàng)目的左邊,我們可以看到一大堆東西,基本上我也不太了解,哈。

LaunchScreen.xib是改變打開應(yīng)用后顯示的開場畫面的。
Images.xcassets是用來集中堆放資源文件的。
Main.storyboard這個就是傳說中的故事板了,基本只用來做過原型設(shè)計(jì)。
main.m入口文件。
AppDelegate用于監(jiān)聽這個應(yīng)用的生命周期內(nèi)的各種事件。

iOS的文件系統(tǒng)


在這里扯下閑篇,加深對iOS運(yùn)行的了解。
每個iOS應(yīng)用都有著屬于自己的沙盒系統(tǒng)、sandbox。每個應(yīng)用都只在自己的沙盒系統(tǒng)里面運(yùn)行,與系統(tǒng)隔絕開來。

Application bundle(應(yīng)用程序包)在每個應(yīng)用里面,都有大量的應(yīng)用程序包,里面存放著各種應(yīng)用在運(yùn)行期間需要的資源文件。而應(yīng)用的主程序包和入口一樣,也都只有一個。
應(yīng)用會動態(tài)將包里面的資源文件加載到內(nèi)存里面,然后通過NSBundle、CFBundleRef定位程序包中的資源。

我們經(jīng)常會看到一些App第一次登陸后,再次打開應(yīng)用就不需要手動登陸了。這個是怎么實(shí)現(xiàn)的呢?
接觸過Web前端開發(fā)的一定不會對Cookies陌生。在iOS里面,實(shí)現(xiàn)的原理跟Cookies也是類似的,都是將信息寫入前端文件系統(tǒng)里面,每次重加載就會在這些文件里面讀取內(nèi)容。
Library/Preferences(偏好文件設(shè)置)存放了應(yīng)用的偏好設(shè)置信息,NSUserDefaults就是對這些文件進(jìn)行讀寫操作

應(yīng)用的啟動流程

AppDelegate的故事


AppDelegate負(fù)責(zé)了整個應(yīng)用的生命周期的監(jiān)聽,他里面自然有著很多不為人知或者已被世人熟悉的故事。
他目睹了應(yīng)用的生老病死,一直不離不棄,真的是一段可歌可泣的單戀情史啊,請容許我在此默哀一下下。

AppDelegate.h

在頭文件里面,成員變量只有一個。繼承了UIResponder類,并且拓展了UIApplicationDelegate接口。

AppDelegate.m

在新建完項(xiàng)目之后,這里面的注釋已經(jīng)說明了這些方法到底有什么用,和怎么用了。
這里還是稍稍翻譯一下好了。

didFinishLaunchingWithOptions:
這個方法會在應(yīng)用啟動后執(zhí)行一次,而且只會在生命周期內(nèi)執(zhí)行一次。

在這里常見到的就是,通知的初始化啊、網(wǎng)絡(luò)狀態(tài)的獲取啊、根視圖的設(shè)置啊之類的。

applicationWillResignActive:
在應(yīng)用將要失去焦點(diǎn)的時候執(zhí)行。亦即是,當(dāng)我將通知中心拉下來的之后,整個APP就會被掛起,然后APP就會失去當(dāng)前焦點(diǎn)而執(zhí)行這個方法。

失去焦點(diǎn)可以做的效果就多了。譬如iOS自帶的,在長按應(yīng)用圖標(biāo)之后,他們就會抖動起來,而把通知中心拉下來,失去了焦點(diǎn),就可以讓圖標(biāo)的抖動停下來。

applicationDidEnterBackground:
在應(yīng)用進(jìn)入后臺的時候執(zhí)行。亦即是,當(dāng)我按下了Home鍵,APP會先執(zhí)行上面的applicationWillResignActive然后就APP就會進(jìn)入后臺并執(zhí)行該方法。

進(jìn)入后臺后,我們可以更改APP在多任務(wù)欄時顯示的畫面,就不讓你看到APP里面的內(nèi)容!

applicationWillEnterForeground:
在應(yīng)用回到前臺時執(zhí)行。與上面進(jìn)入后臺相反,從多任務(wù)欄點(diǎn)選了APP之后,APP會重新回到前臺,然后就會執(zhí)行該方法。

進(jìn)入前臺就調(diào)用鎖屏什么的,可以參考某支付工具。

applicationDidBecomeActive:
在應(yīng)用重新獲得焦點(diǎn)時執(zhí)行。續(xù)上面的方法,APP回到前臺之后,就會重新獲得焦點(diǎn),便會執(zhí)行該方法。(上面通知中下拉下來后,APP失去焦點(diǎn)。在關(guān)閉通知中心后,APP會重獲焦點(diǎn))

和上面的差不多。

applicationWillTerminate:
在應(yīng)用結(jié)束的時候執(zhí)行。APP在多任務(wù)欄被結(jié)束的時候就會執(zhí)行這個方法。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,167評論 25 708
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,422評論 4 61
  • 我愛她,所以我需要她。但是目前她并不需要我,所以我應(yīng)該做的,是當(dāng)她未來需要我的時候,已然為她準(zhǔn)備好她需要的一切。這...
    木子皙913閱讀 206評論 0 0
  • “難道讓你做自己想做的事,生活在讓你感到舒服的環(huán)境里,讓你的內(nèi)心得到安寧是糟踐自己嗎?難道成為年入上萬英鎊...
    書到今生讀已遲閱讀 316評論 0 0
  • 時間總是一把殺豬刀,哪兒疼往哪兒捅。 畢業(yè)都快三年了,感覺還是一樣碌碌無為。揣著會計(jì)專業(yè)的名頭,干著辦公室的...
    只愛提子不愛葡萄閱讀 294評論 0 0

友情鏈接更多精彩內(nèi)容