Android杂谈:systrace简单查看一个应用的启动流程

腾空.png

systrace是用来查看应用和系统运行状态的工具,利用他可以分析一些性能问题。例如查看应用是否卡顿,卡在那个方法了之类的问题。本文简单抓一个浏览器启动的systrace随便看看吧。

一.启动Andriod Device Monitor

连接手机,启动Andriod Device Monitor,点击一下下图箭头指向那个图标


Andriod Device Monitor.png

设置抓取时间和抓取内容,点击OK就开始抓取了,随意启动操作下浏览器,5s后trace.html就生成了。


设置抓取时间和抓取内容.png

二.查看Traced

生成的trace.html要用chrome浏览器打开,浏览器输入网址输入chrome://tracing/,然后把trace.html拉进去就可以了。结果如下。

Paste_Image.png

整个视图布局:
1.CPU占用情况,上图可以看到有8个cpu
2.进程trace
3.每个进程的线程trace,线程主要看下主线程,即UI线程。

看下浏览器UI线程的流程,大概了解下浏览器启动的流程。
首先是出现“POSTFORK”,这个其实是在Fork一个子进程,谁的子进程呢?Zoygote的。

浏览器UI线程.png

搜下源码,
/ frameworks/ base/ core/ java/ com/ android/ internal/ os/ Zygote.java
是程序跑到 forkAndSpecialize方法打出来的。
Paste_Image.png

然后依次是
RuntimeInit :准备虚拟机资源
ActivityThreadMain :Activity主线程入口

Paste_Image.png

bindApplication:建立AMS与应用的binder通信,可以看到他执行了很多子方法,包括打开应用的odex,资源等


bindApplication.png

activityStart:这是回调onactivitystart了,但这时界面应该还是不可见的。


activityStart.png

看下图,activityStart执行后,渲染线程RenderThread才开始工作,所以这是才开始渲染,界面才开始可见。


Paste_Image.png

那这个应用启动花了多少时间了?我们看一下,以POSTFORK到activityStart为准,总共花了615.176ms!!!!牛逼!!

启动时间.png

总结

这篇文章,介绍了systrace的抓取与查看方法。简单分析了下一个应用启动的systrace。用处不大,仅供吐槽。

      </div>
    </div>
</div>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值