這裏只作冷啓動的優化。app
首先咱們要知道App在啓動時都幹了些什麼事,纔能有針對的進行優化。 App的啓動能夠概括爲三個階段:異步
main()
函數執行前main()
函數執行後在main()函數執行前,系統主要會作如下幾件事:函數
相應的這個階段對於啓動速度優化能夠作的事情:大數據
main()執行後的階段是指,從main()執行開始到appDelegate的didFinishLaunchingWithOptions方法裏首屏渲染相關方法執行完成。優化
這裏更加優化的開發方式是肯定哪些是首屏渲染必要的初始化功能,哪些是APP啓動必要的初始化功能,而那些只是須要在對應的功能開始是才須要初始化的。整理出來以後,分別放到對應的階段進行初始化線程
這個階段就是從渲染完成時開始,到didFinishLaunchingWithOptions 方法做用域結束時結束。 這個階段用戶已經能夠看到App的首頁信息了,因此優化級別放在最後,可是耗時操做仍是要優先處理,以避免影響用戶體驗。指針
從main()函數執行後這個階段下手,優化的思路是main()函數執行後到首屏渲染完成前只處理與首屏渲染相關的操做,非首屏業務的初始化,監聽註冊,配置文件讀取等放到首屏渲染完層後處理。code
檢查首屏渲染完成前主線程上有哪些耗時方法,將不必的耗時方法以後或者異步執行。一般狀況下,耗時較長的方法主要發生在計算大量數據的狀況下,具體表現就是加載,編輯,存儲圖片和文件等資源。 這裏有兩種方式能夠能夠監控App啓動速度:進程