Systrace分析app启动分析

Android Version: 6.0及以上 Platform: 通用

1. 介绍

此篇文章将介绍如何通过systrace来分析在launch界面click一个app的icon后app的启动时间,包括了animation off和animation on的情况,以google music应用为例。

2. 寻找InputReader–>AppLaunch_dispatchPtr:Down

根据Android系统事件传递的机制,第一步先找到frameworks层中事件出现的源头,就是在InputReader进程中的AppLaunch_dispatchPtr:Down这个动作。 AppLaunch_dispatchPtr_down 下方可以看到其时间 AppLaunch_dispatchPtr_down_time

3. 寻找InputReader–>AppLaunch_dispatchPtr: Up

然后找到click事件弹起的那个时间点: AppLaunch_dispatchPtr_up AppLaunch_dispatchPtr_up_time 这里看到down和up之间相差了19ms左右,这是因为手动点击时的迟滞时间导致,而每次操作这个值都可能不同。app的launch time应该以up为起始。

4. 寻找Launcher接收到Down事件

然后click事件会从frameworks中分发到launcher界面 launcher_receive_down launcher_receive_down_time

5. 寻找Launcher接收到Up事件,up在down的后面

launcher_receive_up launcher_receive_up_time

6. Launcher响应click事件

launcher_receive_onclick launcher_receive_onclick_time

7. Launcher开始通过AM去启动Activity

launcher_amStart launcher_amStart_time

8.寻找WindowManager中的绘制start window的时间

wm_start_window 这里有个经验可以参考,一般在systrace的图形中,WindowManager的start在InputReader的后上方 wm_start_window_experience 先找到wmAddStarting的时间 wm_wmAdd wm_wmAdd_time 再看下绘制结束的时间 wm_finishDraw wm_finishDraw_time

9. 寻找surfaceflinger最终送帧的时间点

sf_post sf_post_time

到这一步就是animation off情况下,启动music的第一帧的上层显示时间,也就是说如果关闭了启动动画,那么第一帧就是WindowManager绘制出的白屏画面。 如果从down开始计算是408.558-196.164=212.394,因为手动down的误差较大,如果从up时间开始算就是408.558-215.671=192.887ms。在animation on的情况下,情况又不同了,在以上的基础上还会走app的启动动画,接着来看。

10. 寻找music进程绘制ui的时间

先找到music进程的图形 music_view 然后找到finishiDraw music_finishDraw music_finishDraw_time 这里就可以计算出music绘制完第一帧的时间,然后继续查看附近的surfaceflinger的送帧时间 music_sf_post music_sf_post_time 这里就可以计算出music应用绘制和显示第一帧花了多少时间 2518.475-408.558=2109.917ms 加上前面绘制startWindow的时间就可以算出总时间

参考地址:http://chendongqi.me/2017/02/18/systrace_appLauncher/

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值