關(guān)于App啟動速度優(yōu)化

冷啟動、熱啟動

冷啟動: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)等;

今天就到這~

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