Systrace之App啟動(dòng)分析

前言

前一片文章講了Systrace的基本用發(fā),本片文章講解通過(guò)一個(gè)例子的分析,如何在生成的trace信息中找到你想要的內(nèi)容。

一. App啟動(dòng)方式以及啟動(dòng)流程

1.1 App啟動(dòng)方式

1>冷啟動(dòng):app沒(méi)有啟動(dòng)過(guò)或者進(jìn)程被殺死,系統(tǒng)不存在該app進(jìn)程,此時(shí)啟動(dòng)為冷啟動(dòng)。
2>熱啟動(dòng):app進(jìn)程只是出于后臺(tái),系統(tǒng)只是把它從后臺(tái)帶到前臺(tái),展示給用戶。

1.2 App啟動(dòng)流程

Screenshot from 2020-04-14 09-51-58.png

上圖來(lái)自https://my.oschina.net/jdking/blog/3019829/print

大致就是Lancher與AMS通信,AMS檢查是否存在當(dāng)前啟動(dòng)的進(jìn)程;如果對(duì)應(yīng)進(jìn)程不存在,AMS與Zygote通信,Zygote孵化出來(lái)新進(jìn)程;新進(jìn)程中ActivityThread的main方法執(zhí)行,加載資源,啟動(dòng)looper等,最后渲染出幀,完成應(yīng)用的啟動(dòng)。

二. App啟動(dòng)的trace分析

這里只講一下冷啟動(dòng)的方式,熱啟動(dòng)類似,上篇文件文章也將了如何抓起這個(gè)過(guò)程的trace信息,這里我們簡(jiǎn)單說(shuō)一下,在點(diǎn)擊應(yīng)用圖標(biāo)的之前,我們需要打開(kāi)DDMS,將Systrace的設(shè)置選項(xiàng)勾選好之后,點(diǎn)擊ok,接著點(diǎn)擊app圖標(biāo),完全啟動(dòng)幾秒之后,我們找到對(duì)應(yīng)生成的trace.html文件用Google Chrom打開(kāi),我這里如下圖(以下截圖是Pixel(API:R)模擬器抓取的trace)


Screenshot from 2020-04-14 10-26-44.png
Screenshot from 2020-04-14 10-27-20.png

首先我們從Luncher的進(jìn)程開(kāi)始分析,Luncher向AMS發(fā)送打開(kāi)應(yīng)用的的Event事件,AMS檢查目標(biāo)進(jìn)程還沒(méi)有啟動(dòng),請(qǐng)求Zygote孵化新進(jìn)程,ActivityThread發(fā)起bindApplication同時(shí)加載對(duì)應(yīng)apk資源,最后啟動(dòng)Activity
如想了解具體啟動(dòng)流程可以參考這篇文章
http://www.manongjc.com/article/25244.html

Screenshot from 2020-04-14 11-01-11.png
Screenshot from 2020-04-14 11-08-59.png

接下來(lái)就是開(kāi)始渲染對(duì)應(yīng)應(yīng)用的UI啦,Systrace以每一針的方式展示出來(lái),我們看下面的圖,在冷啟動(dòng)的方式下到界面完全顯示出來(lái),大約花了575ms,在正常啟動(dòng)時(shí)間的范圍內(nèi)(應(yīng)用冷啟動(dòng)1m的規(guī)定內(nèi))


Screenshot from 2020-04-14 11-43-19.png

總結(jié)

如果在啟動(dòng)的過(guò)程花費(fèi)了很長(zhǎng)時(shí)間,超出了規(guī)定的1m,我就可以通過(guò)這個(gè)流程,查看沒(méi)一段執(zhí)行的時(shí)間,分析那一個(gè)環(huán)節(jié)出現(xiàn)了比較耗時(shí)的操作,更方便的定位問(wèn)題的根本原因。
當(dāng)讓Systrace在分析UI卡頓上可能會(huì)更有優(yōu)勢(shì),后續(xù)會(huì)給大家分享一片關(guān)于UI卡頓的分析

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

相關(guān)閱讀更多精彩內(nèi)容

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