app 启动性能分析

一、activity的启动流程

1、唤醒APP

2、启动一个空白窗口,这个窗口什么都不做

3、启动一个线程

4、启动一个object,即调用Application OnCrete

5、创建主线程,即MainTread,用于初始化mainActivity,渲染和数据初始化。渲染完成后,即DisplayedTime时,将空白窗口对调

6、页面已经显示,但是没有加载完成,动态加载。

简单概括就是:Application OnCrete:加载第三方的SDK

Activity OnCrete:

  • 加载自身的逻辑
  • 发送远程数据请求,XXX.json
  • 渲染页面list

二、app性能指标

  • 冷启动    最重要  不超过5S
  • 暖启动    不超过2S
  • 热启动    不超过1.5S
  • 首屏启动

三、主要流程

  • adb logcat
  • 录屏+视频拆帧
  • UIautomator等自动化工具200ms巡检界面变化
  • traceView
  • 硬埋点

四、使用adb logcat

package = XX

清除缓存数据:adb  shell pm clear $package

停止进程:adb shell am force-stop $package

启动APP:adb shell am start -S -W  $package/.mainActivity

获取数据:adb logcat | grep -i displayed

五、使用adb logcat的结果

startTime :记录刚准备调用startActivityAndWait()的时间

endTime:记录startActivityAndWait()返回的时间点

WaitTime:startActivityAndWait()调用耗时

WaitTime=endTime-startTime

六、使用ffmpeg拆帧

  • adb shell am force-stop $package
  • adb shell screenrecord --bugreport --time-limit 30  /data/local/tmp/record.mp4 &
  • adb shell am start -S -W  $package/.mainActivity
  • wait
  • adb pull /data/local/tmp/record.mp4 .
  • ffmpeg -i record.mp4 record.gif
  • ffmpeg -i record.mp4 -r 10 frames_%03d.jpg

 

app 启动性能分析

上一篇:Ruby-China for Android客户端开源了


下一篇:Java设计模式之单例模式