Android啟動速度(cold warm hot)

官方文檔詳細介紹了cold start孕索, warm start 和 hot start 3種情況下app啟動優(yōu)化 下邊是文檔地址

https://developer.android.com/topic/performance/vitals/launch-time

一:首先解釋下這幾個啟動狀態(tài)的場景

1,cold start :應(yīng)用完全從頭啟動

2糖权,warm start:

1)用戶在主actiivty點擊了back鍵退出了應(yīng)用(沒有調(diào)用Precess单绑。kill(myPid))這時的app進程還活著嗦董,用戶此時又點擊了桌面的啟動圖標若治,app進程不需要重新啟動 但是actiivty需要重新創(chuàng)建

2)由于系統(tǒng)內(nèi)存緊張 app進程被殺了 但是系統(tǒng)的back stack還保留著活動 此時用戶啟動app?

3居兆,hot start:進程存在activity也沒有銷毀(按下home鍵)此時再回到app 還有情況就是系統(tǒng)內(nèi)存緊張調(diào)用了activity的onTrimMemory(), 然后activity需要重新創(chuàng)建view 并實現(xiàn)渲染繪制同時還需要實例化業(yè)務(wù)對象

二:為了達到優(yōu)化app啟動速度的目的覆山,我們需要理解一下app啟動的過程?

但是我現(xiàn)在描述的過程不像網(wǎng)上大家看到的深入到內(nèi)核和framework的源碼角度來敘述二是基本簡述一下啟動的流程順序

Cold start 發(fā)生在手機開機后第一次啟動app或者是殺掉app進程后再次啟動,這個期間如果處理不好會極大的影響app的啟動速度和體驗泥栖,因為這個階段系統(tǒng)和app加載初始化的資源比其他任何狀態(tài)下都更多也就意味著消耗更多時間簇宽。

在cold start最開始階段 系統(tǒng)有3個任務(wù) 1:加載和啟動app。2:啟動app后立即顯示一個空白的window窗口吧享。3:創(chuàng)建app進程

創(chuàng)建app進程階段 app進程會有以下幾個步驟 1:創(chuàng)建app對象(application)魏割。2:啟動主線程。3:創(chuàng)建主activity钢颂。4:inflate Views钞它。5:布局屏幕(status bar navigation bar 我們的contentView)。6:開始繪制殊鞭。一旦app進程完成了第一幀的繪制 系統(tǒng)進程會把繪制好的actiivty把之前空白的window替換掉遭垛,這時用戶就可以使用app進行交互了。

Figure 1 shows how the system and app processes hand off work between each other.

Figure 1.?A visual representation of the important parts of a cold application launch.

Performance issues can arise during creation of the app and creation of the activity.

性能問題會發(fā)生在app的create和actiivty的create階段 也就是application的onCreate()(如果我們重寫了這個方法的話)和activity的onCreate()

Activity creation activity的創(chuàng)建

app進程創(chuàng)建了我們的activity操灿,activity做了以下的一些操作

Initializes values.

Calls constructors.

Calls the callback method, such as?Activity.onCreate(), appropriate to the current lifecycle state of the activity.

Typically, the?onCreate()?method has the greatest impact on load time, because it performs the work with the highest overhead: loading and inflating views, and initializing the objects needed for the activity to run.最關(guān)鍵的是這句話 activity的onCreate()方法執(zhí)行了非常大的一些操作例如inflate Views 初始化activity里的對象锯仪,所以我們一定不要把業(yè)務(wù)邏輯放在這個生命周期進行。

怎么檢測app啟動各個階段的加載時間呢? 谷歌搞出了google concole

Android vitals 這是一個工具

Android vitals can help improve your app's performance by alerting you, via the?Play Console, when your app's startup times are excessive. Android vitals considers your app's startup times excessive when the app's:

Cold?startup takes 5 seconds or longer.

Warm?startup takes 2 seconds or longer.

Hot?startup takes 1.5 seconds or longer.

A?daily session?refers to a day in which your app was used.

Android vitals doesn't report data for?hot?startups. For information on how Google Play collects Android vitals data, see the?Play Console?documentation.

但是我們可以在logcat中查看log來分析app啟動所消耗的時間? 只需要連接上設(shè)備趾盐,logcat上輸入過濾字符串Displayed 然后啟動應(yīng)用就可以觀察到了 下邊是我的截圖


Displayed

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末庶喜,一起剝皮案震驚了整個濱河市小腊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌溃卡,老刑警劉巖溢豆,帶你破解...
    沈念sama閱讀 222,378評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異瘸羡,居然都是意外死亡漩仙,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評論 3 399
  • 文/潘曉璐 我一進店門犹赖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來队他,“玉大人,你說我怎么就攤上這事峻村◆镎郏” “怎么了?”我有些...
    開封第一講書人閱讀 168,983評論 0 362
  • 文/不壞的土叔 我叫張陵粘昨,是天一觀的道長垢啼。 經(jīng)常有香客問我,道長张肾,這世上最難降的妖魔是什么芭析? 我笑而不...
    開封第一講書人閱讀 59,938評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮吞瞪,結(jié)果婚禮上馁启,老公的妹妹穿的比我還像新娘。我一直安慰自己芍秆,他們只是感情好惯疙,可當(dāng)我...
    茶點故事閱讀 68,955評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著妖啥,像睡著了一般霉颠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上迹栓,一...
    開封第一講書人閱讀 52,549評論 1 312
  • 那天掉分,我揣著相機與錄音,去河邊找鬼克伊。 笑死酥郭,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的愿吹。 我是一名探鬼主播不从,決...
    沈念sama閱讀 41,063評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼犁跪!你這毒婦竟也來了椿息?” 一聲冷哼從身側(cè)響起歹袁,我...
    開封第一講書人閱讀 39,991評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎寝优,沒想到半個月后条舔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,522評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡乏矾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,604評論 3 342
  • 正文 我和宋清朗相戀三年孟抗,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钻心。...
    茶點故事閱讀 40,742評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡凄硼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出捷沸,到底是詐尸還是另有隱情摊沉,我是刑警寧澤,帶...
    沈念sama閱讀 36,413評論 5 351
  • 正文 年R本政府宣布痒给,位于F島的核電站说墨,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏苍柏。R本人自食惡果不足惜婉刀,卻給世界環(huán)境...
    茶點故事閱讀 42,094評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望序仙。 院中可真熱鬧,春花似錦鲁豪、人聲如沸潘悼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽治唤。三九已至,卻和暖如春糙申,著一層夾襖步出監(jiān)牢的瞬間宾添,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評論 1 274
  • 我被黑心中介騙來泰國打工柜裸, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留缕陕,地道東北人。 一個月前我還...
    沈念sama閱讀 49,159評論 3 378
  • 正文 我出身青樓疙挺,卻偏偏與公主長得像扛邑,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子铐然,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,747評論 2 361

推薦閱讀更多精彩內(nèi)容