App啟動優(yōu)化(一)冷啟動和熱啟動

如需轉(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啟動的分類

啟動分類

冷啟動

當(dāng)啟動應(yīng)用時,后臺沒有該應(yīng)用的進程,這時系統(tǒng)會重新創(chuàng)建一個新的進程分配給該應(yīng)用,這個啟動方式就是冷啟動

大致流程

當(dāng)點擊app的啟動圖標(biāo)后,首先會通過AMS在System進程展示一個Starting Window(通常情況下是個白屏,可以通過設(shè)置Application的theme修改),接著AMS會通過Zygote創(chuàng)建應(yīng)用程序的進程,并通過一系列的步驟后調(diào)用Application的attachBaseContext()onCreate()然后最終調(diào)用Activity的onCreate()/onStart/onResume以及contentViewmeasure/layout/draw最終顯示在界面上

App冷啟動過程

冷啟動耗時最多,是app啟動時長的衡量標(biāo)準(zhǔn)

熱啟動

在后臺已有進程的情況下,系統(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)化,從而加快啟動時間

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。

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