iOS app 啟動

App 啟動動干了那些事情

  • 一般情況下app 啟動分為冷啟動和熱啟動
    ** 冷啟動是指,App點擊啟動前诸尽,他的進程不在系統(tǒng)里面昧旨,需要創(chuàng)建一個進程分配他的啟動情況,這是一次完整的啟動過程弥喉。
    ** 熱啟動是指,App 在冷啟動用戶將app退到后臺玛迄,在app 的進程還在系統(tǒng)的情況下由境,用戶點擊log進入app的過程,這個過程做的事情非常少蓖议。

用戶能感知到啟動慢虏杰,其實都是發(fā)生在主線程上。而主線程慢的原因有很多勒虾,比如在主線程中進行了大量的讀寫操作纺阔、在渲染周期中執(zhí)行了大量的計算等。
究竟如何才能把app啟動的所有耗時都找出來呢从撼?解決這個問題州弟,你首先要弄清楚App在啟動前都做了那些事情能钧栖。

一般而言低零,App的啟動時間,是指涌入點擊App開始拯杠,到用戶看到第一個界面之間的時間掏婶。app 的啟動包括三個階段:
1 main()函數(shù)執(zhí)行前
2 main()函數(shù)執(zhí)行后
3 首屏渲染完成后

main() 函數(shù)執(zhí)行前

在main函數(shù)執(zhí)行前會做:

  • 加載可執(zhí)行的文件
  • 加載動態(tài)鏈接哭,進行rebase 指針調(diào)整和符號bind
  • Objc 運行時處理潭陪,包括Objc 相關類的注冊雄妥、category注冊最蕾、selector 唯一性檢查等。
    相應的老厌,這個階段對于啟動優(yōu)化來說瘟则,可以做的事情包括
  • 減少動態(tài)庫的加載。每個庫本身有依賴關系枝秤,蘋果建議使用更少的動態(tài)庫醋拧,并且建議在使用動態(tài)庫的數(shù)量較多時,盡量將多個動態(tài)庫合并淀弹。數(shù)量上丹壕,蘋果可以支持6個非系統(tǒng)動態(tài)庫合成一個
  • 減少加載啟動后不會去使用的的類和方法
  • +(load)方法里的內(nèi)容可以放到首屏渲染后去完成,或是用+initalize()方法替換薇溃。因為一個load 方法會帶來4毫秒的耗時菌赖。
  • 控制c++ 全局變量的數(shù)量

mian()函數(shù)后

main()函數(shù)執(zhí)行后的階段,是指從main 函數(shù)執(zhí)行開始沐序,到appDelegate 的didFinishLaunchingWithOptions方法里首頁離屏渲染的相關執(zhí)行方法執(zhí)行完成琉用。
首頁的業(yè)務代碼都是在這個階段,也就是首頁離屏渲染前執(zhí)行包括:

  • 首頁初始化需要配置文件的讀寫操作
  • 首頁列表大數(shù)據(jù)的讀取
  • 首頁渲染的大量計算
    很多時候薄啥,開發(fā)者會把各種初始化工作都放到這個階段執(zhí)行辕羽,導致渲染完成滯后。更加優(yōu)化的開發(fā)方式垄惧,應該是從功能上梳理那些是首屏渲染必要的初始化刁愿,那些是app 啟動必要的初始化功能,而那些是功能需要使用的時候才需要的到逊。
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末铣口,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子觉壶,更是在濱河造成了極大的恐慌脑题,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件铜靶,死亡現(xiàn)場離奇詭異叔遂,居然都是意外死亡,警方通過查閱死者的電腦和手機争剿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門已艰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蚕苇,你說我怎么就攤上這事哩掺。” “怎么了涩笤?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵嚼吞,是天一觀的道長盒件。 經(jīng)常有香客問我,道長舱禽,這世上最難降的妖魔是什么炒刁? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮誊稚,結果婚禮上切心,老公的妹妹穿的比我還像新娘。我一直安慰自己片吊,他們只是感情好绽昏,可當我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著俏脊,像睡著了一般全谤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上爷贫,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天认然,我揣著相機與錄音,去河邊找鬼漫萄。 笑死卷员,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的腾务。 我是一名探鬼主播毕骡,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼岩瘦!你這毒婦竟也來了未巫?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤启昧,失蹤者是張志新(化名)和其女友劉穎叙凡,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體密末,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡握爷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了严里。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瑟幕。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡泡一,死狀恐怖罢猪,靈堂內(nèi)的尸體忽然破棺而出谐区,到底是詐尸還是另有隱情漓柑,我是刑警寧澤教硫,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布叨吮,位于F島的核電站,受9級特大地震影響瞬矩,放射性物質(zhì)發(fā)生泄漏茶鉴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一景用、第九天 我趴在偏房一處隱蔽的房頂上張望涵叮。 院中可真熱鬧,春花似錦伞插、人聲如沸割粮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽舀瓢。三九已至,卻和暖如春耗美,著一層夾襖步出監(jiān)牢的瞬間京髓,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工商架, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留堰怨,地道東北人。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓蛇摸,卻偏偏與公主長得像备图,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子赶袄,可洞房花燭夜當晚...
    茶點故事閱讀 45,512評論 2 359

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