Activity启动流程

iOS 应用程序启动只获取一次_iOS 应用程序启动只获取一次

 名词解释说明:

Application OnCreate:加载第三方的sdk

Activity OnCreate:加载自身的逻辑;发送远程数据请求;渲染界面List;

响应时间

❖ app启动:⾸次安装启动、冷启动、暖启动、热启动
❖ app交互:事件响应、内部加载速度、⾸屏渲染
❖ 接口性能:dns、http/https、download、json
❖ h5性能:cache、资源加载、dom、page

app启动性能名称解释

❖ ⾸次安装启动:⾸次安装会耗费较多的时间初始化,⽐如补丁下载、缓存数据
❖ 冷启动:进程创建到app页面展示期间,对应与display之前的时间,这个时间参考很重要,对应Android建议时间:5S内,很重要;
❖ 暖启动:进程存在,界⾯不存在,就是应用后台呆太久内存被杀掉,这时重新启动app的过程就是暖启动(此时app部分信息还是保存在应用中没有被清空)。对应Android建议时间:2S内
❖ 热启动:界⾯对象仍然存在,应用在后台切换到前置的过程,对应Android建议时间:1.5S内
❖ ⾸屏启动:第⼀屏加载完整

❖ adb shell am force-stop com.xueqiu.android
❖ adb shell am start -S -W com.xueqiu.android/.view.WelcomeActivityAlias
❖ adb logcat |grep -i activitymanager.*Displayed

UI性能检测常⽤办法或工具

❖ adb logcat
❖ 录屏+视频拆帧
❖ uiautomator等⾃动化⼯具200ms巡检界⾯变化
❖ traceview
❖ 硬埋点

 性能检测方案一:adb logcat

1、清除app数据
adb shell pm clear package_name(比如:package_name=com.xueqiu.android)

2、强制停掉应用
adb shell am force-stop package_name(比如:package_name=com.xueqiu.android)

3、统计时间
adb shell am start -S -W package_name/ActivityName(比如:package_name=com.xueqiu.android、activity_name=.view.WelcomeActivityAlias
-W 等待activity启动完成  -S 确保应用启动前先停掉)

4、展示activity 启动时间
adb logcat | findstr -i displayed

iOS 应用程序启动只获取一次_iOS 应用程序启动只获取一次_02

iOS 应用程序启动只获取一次_android_03

adb logcat 结果
 startTime:记录刚准备调用startActivityAndWait()的时间点;
 endTime:记录startActivityAndWait()函数调用返回的时间点;
 WaitTime:startActivityAndWait()调用耗时
 WaitTime = endTime-startTime

性能检测方案二  视频拆帧:ffmpeg拆帧,人工计算启动时间

 ffmpeg官网下载

 https://www.ffmpeg.org/download.html#build-windows

 操作步骤:

1、强制关闭应用
adb shell am force-stop package_name(比如:com.xueqiu.android)

2、开启录制,指定手机端路径(原生路径)
adb shell screenrecord --bugreport --time-limit 20 /data/local/xueqiu.mp4
详解:data/local -->代表手机端路径
         20 -->代表录制时间

3、查看activity活动页启动时间
adb shell am start -S -W com.xueqiu.android/.view.WelcomeActivityAlias

4、把手机端录制的文件,推送到电脑本地目录
adb pull /data/local/xueqiu.mp4 .

5、把本地录制的文件,转换成gif文件
ffmpeg -i xueqiu.mp4 xueqiu.gif

6、把录制文件拆帧,每1S拆为10帧且命名为frames_%03d.jpg格式
ffmpeg -i xueqiu.mp4 -r 10  tmp/frames_%03d.jpg

7、通过拆帧文件,统计待测试activity启动时间
详解:关注待启动activity点击帧到activity启动完成所需要帧数,总数*0.1就是耗时的秒数时间