Activity启动流程

名词解释说明:

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

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就是耗时的秒数时间

最新文章

  1. iOS开发使用半透明模糊效果方法整理
  2. MySQL版本升级之5.6到5.7
  3. coursera机器学习笔记-神经网络,初识篇
  4. 使用Struts 2框架实现文件下载
  5. webwork
  6. 【转载】关于Embedded Linux启动的经典问题
  7. jquery------.cycle的使用
  8. html5 (个人笔记)
  9. 改变WPF ListBoxItem的选中样式
  10. 神经网络学习-问题(二)-scipy未正确安装报DLL找不到的问题
  11. [jobdu]矩形覆盖
  12. [caffe]深度学习之图像分类模型VGG解读
  13. CSS居中的方法总结
  14. POJ-2386(深广搜基础)
  15. wordpress教程之函数讲解
  16. Dos.Common
  17. C#からネイティブDLLを呼び出す場合のVSからのデバッグのジレンマを解決する
  18. Java8之lambda表达式
  19. cf1042d 树状数组逆序对+离散化
  20. cocos2dx lua 绑定之一:自动绑定自定义类中的函数

热门文章

  1. Vulnhub之Credit_Card_Scammers靶场渗透
  2. elasticsearch之metric聚合
  3. [编程基础] C++多线程入门4-数据共享和资源竞争
  4. [深度学习] 经典深度学习模型及其微调(Caffe)总结
  5. [WPF]将方法设为弃用
  6. 抽奖动画 - 播放svga动画
  7. 腾讯出品小程序自动化测试框架【Minium】系列(二)项目配置及测试套件使用说明
  8. angular使用_HttpClient或者Fetch发送POST/GET请求下载/上传文件
  9. 字符输入流读取字符数据-writer类
  10. CoppeliaSim(原V-REP)教育版不给下载的解决方法