App啟動優(yōu)化

1、冷啟動/熱啟動

2、啟動順序

1.pre-main階段

1.1.加載應(yīng)用的可執(zhí)行文件

1.2.加載動態(tài)鏈接庫加載器dyld(dynamicloader)

1.3.dyld遞歸加載應(yīng)用所有依賴的dylib(dynamiclibrary 動態(tài)鏈接庫)

2.main()階段

2.1.dyld調(diào)用main()

2.2.調(diào)用UIApplicationMain()

2.3.調(diào)用applicationWillFinishLaunching

2.4.調(diào)用didFinishLaunchingWithOptions

3、優(yōu)化建議

pre_main階段

1.移除不需要用到的動態(tài)庫2.移除不需要用到的類3.合并功能類似的類和擴(kuò)展4.盡量避免在+load方法里執(zhí)行的操作,可以推遲到+initialize方法中。

main階段

* 日志、統(tǒng)計(jì)等必須在 APP 一啟動就最先配置的事件

* 項(xiàng)目配置、環(huán)境配置、用戶信息的初始化 、推送、IM等事件

* 其他 SDK 和配置事件

梳理各個三方庫,找到可以延遲加載的庫,做延遲加載處理,比如放到首頁控制器的viewDidAppear方法里。

梳理業(yè)務(wù)邏輯,把可以延遲執(zhí)行的邏輯,做延遲執(zhí)行處理。比如檢查新版本、注冊推送通知等邏輯。

避免復(fù)雜/多余的計(jì)算。

避免在首頁控制器的viewDidLoad和viewWillAppear做太多事情,這2個方法執(zhí)行完,首頁控制器才能顯示,部分可以延遲創(chuàng)建的視圖應(yīng)做延遲創(chuàng)建/懶加載處理。

采用性能更好的API。

首頁控制器用純代碼方式來構(gòu)建。

?著作權(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)容

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