冷啟動、熱啟動
冷啟動:App啟動前,它的進(jìn)程不在系統(tǒng)里,系統(tǒng)新創(chuàng)建一個進(jìn)程分配給它啟動;
熱啟動:App冷啟動后,將App退至后臺,App進(jìn)程還在系統(tǒng)里的情況下,用戶重新進(jìn)入App的過程;
App啟動干了什么?如何優(yōu)化?
- main()函數(shù)執(zhí)行前
-加載可執(zhí)行文件(.o);
-加載動態(tài)鏈接庫,bind符號綁定等;
-運(yùn)行時初始化,Objc相關(guān)類的注冊,分類的注冊;
-執(zhí)行+load()方法,attribute修飾的函數(shù)的調(diào)用,創(chuàng)建C++靜態(tài)全局變量;
優(yōu)化:--減少動態(tài)庫加載,如果使用動態(tài)庫較多,可以將多個動態(tài)庫進(jìn)行合并;
--減少啟動后不會調(diào)用的方法;
--+load()方法里面的內(nèi)容放到首屏渲染完成后執(zhí)行,或使用+initialize()代替;
--控制C++全局變量的數(shù)量;- main()函數(shù)執(zhí)行后(即main函數(shù)開始到appdelegate方法didfinish執(zhí)行)
-首屏初始化所需配置文件和讀寫操作;
-列表數(shù)據(jù)讀??;
-首屏渲染計算,基本是渲染首屏的操作;
優(yōu)化:區(qū)分哪些是app啟動后必須初始化的功能,哪些是對應(yīng)功能開始使用時才需要初始化的,將這些初始化放到合適的階段調(diào)用;- 首屏渲染完成后
渲染完成后,就可以看到首頁頁面,一般就是其他業(yè)務(wù)基礎(chǔ)功能的初始化,監(jiān)聽注冊等; 這個階段的優(yōu)化一般就是整體的優(yōu)化,包括功能、方法實現(xiàn)等;
今天就到這~