如需轉(zhuǎn)載請評論或簡信,并注明出處枷餐,未經(jīng)允許不得轉(zhuǎn)載
系列文章
目錄
前言
啟動速度是一個app對用戶來說的第一體驗,如果啟動速度慢就會給用戶的第一印象不太好,這里我們可以參考”八秒定律“
八秒定律是在互聯(lián)網(wǎng)領(lǐng)域存在的一個定律,即指用戶訪問一個網(wǎng)站時玩裙,如果等待網(wǎng)頁打開的時間超過8秒,會有超過70%的用戶放棄等待
本系列文章將進行App啟動優(yōu)化相關(guān)講解段直,本節(jié)我們先來了解一下App啟動的分類
啟動分類
冷啟動
當啟動應(yīng)用時吃溅,后臺沒有該應(yīng)用的進程,這時系統(tǒng)會重新創(chuàng)建一個新的進程分配給該應(yīng)用鸯檬,這個啟動方式就是冷啟動
大致流程
當點擊app的啟動圖標后决侈,首先會通過AMS在System進程展示一個Starting Window(通常情況下是個白屏,可以通過設(shè)置Application的theme修改)喧务,接著AMS會通過Zygote創(chuàng)建應(yīng)用程序的進程赖歌,并通過一系列的步驟后調(diào)用Application的attachBaseContext()
、onCreate()
然后最終調(diào)用Activity的onCreate()/onStart/onResume
以及contentView
的measure/layout/draw
最終顯示在界面上
冷啟動耗時最多功茴,是app啟動時長的衡量標準
熱啟動
在后臺已有進程的情況下庐冯,系統(tǒng)會從已有的進程中來啟動應(yīng)用,這個方式叫熱啟動(例:按back鍵坎穿、home鍵展父,應(yīng)用雖然會退出,但是該應(yīng)用的進程是依然會保留在后臺玲昧,可進入任務(wù)列表查看)栖茉。熱啟動因為會從已有的進程中來啟動,所以熱啟動就不會走Application
這步了孵延,而是直接走MainActivity
(包括一系列的測量吕漂、布局、繪制)尘应,所以熱啟動的過程只需要創(chuàng)建和初始化一個MainActivity
就行了惶凝,而不必創(chuàng)建和初始化Application
吼虎。顯然熱啟動比冷啟動更快
參考文檔:App startup time
總結(jié)
本文介紹了了冷啟動和熱啟動以及它們對應(yīng)的啟動流程,在明白了流程之后我們才能有針對性的對各個步驟進行優(yōu)化苍鲜,從而加快啟動時間