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

app启动性能分析的更多相关文章

  1. Android app启动耗时分析

    前言 app启动耗时过长的话,无论你的app里面的内容多么丰富有趣,作为一个用户,首先是没有耐心去等待的,如果我是一个用户,我会这样想:这是什么垃圾公司出的什么烂app,再等2s不进来就卸载,黑人问号 ...

  2. iOS App 启动性能优化

    1. App启动过程 解析Info.plist 加载相关信息,例如如闪屏 沙箱建立.权限检查 Mach-O加载 如果是胖二进制文件,寻找合适当前CPU类别的部分 加载所有依赖的Mach-O文件(递归调 ...

  3. VS2012中启动性能分析 独占样本数的分析

    http://www.cnblogs.com/TianFang/archive/2012/11/18/2776266.html

  4. 专项测试-App性能分析

    专项测试 app性能 Activity是Android组件中最基本也是最为常见用的四大组件(Activity,Service服务,Content Provider内容提供者,BroadcastRece ...

  5. Android5 Zygote 与 SystemServer 启动流程分析

    Android5 Zygote 与 SystemServer 启动流程分析 Android5 Zygote 与 SystemServer 启动流程分析 前言 zygote 进程 解析 zygoterc ...

  6. 马蜂窝 iOS App 启动治理:回归用户体验

    增长.活跃.留存是移动 App 的常见核心指标,直接反映一款 App 甚至一个互联网公司运行的健康程度和发展动能.启动流程的体验决定了用户的第一印象,在一定程度上影响了用户活跃度和留存率.因此,确保启 ...

  7. VS2010自带的性能分析工具分析.NET程序的性能

    这篇博文给大家分享的是,如何使用VS自带的性能分析工具来分析我们编写的.NET程序,一边找出程序性能的瓶颈,改善代码的质量.在实际开发中,性能真的很重要,往往决定一个产品的生死~良好的用户体验的基础之 ...

  8. 女儿拿着小天才电话手表问我App启动流程

    前言 首先,new一个女儿, var mDdaughter = new 女儿("6岁","漂亮可爱","健康乖巧","最喜欢玩小天 ...

  9. Android APP性能分析方法及工具

    近期读到<Speed up your app>一文.这是一篇关于Android APP性能分析.优化的文章.在这篇文章中,作者介绍他的APP分析优化规则.使用的工具和方法.我觉得值得大家借 ...

  10. App 性能分析

    关键因素: ---- Instrument 性能分析神器 1. 启动时间 应用启动时间长短对用户第一次体验至关重要,同时系统对应用的启动.恢复等状态的运行时间也有严格的要求,在应用超时的情况下系统会直 ...

随机推荐

  1. 总结开源项目中的常见坏实践(Bad Practice)

    一些开源项目包含了各种编程的最佳实践供人参考学习和借鉴.但是也有一些开源项目虽然初衷是好的.但是包含了一些代码的坏实践.特别是对于一部分刚入行的大学生来说,可能会给到一些错误的示范.于是在此列举一些项 ...

  2. 【转载】EXCEL VBA Workbook、Worksheet、Range的选择和操作

    Workbooks对象是Microsoft Excel 应用程序中当前打开的所有 Workbook 对象的集合.有close.add.open等方法.   Workbooks.close        ...

  3. 使用Jiralert实现AlertManager告警对接Jira

    简介 Alertmanager 处理由客户端应用程序(如 Prometheus server)发送的警报.它负责去重(deduplicating),分组(grouping),并将它们路由(routin ...

  4. B站地区限制破解方法

    B站地区限制破解方法 当我们观看bilibili番剧时,经常会看到"仅限港澳台地区"的字样.那么,有没有一种方法,不需要挂梯子,就可以观看这些被限制的番剧呢? 本教程只适用于bil ...

  5. 学习记录C

    学了这么久,终于开始实训项目了....... 奥里给 !!! 压力好大,好喜欢什么也不想的时候 记录学习的代码 分享一下 /* system函数:( #include<stdlib.h> ...

  6. 01-Sed简介

    1 Sed简介 Sed(Stream EDitor)为Uninx系统上提供将编辑工作自动化的编辑器,使用者无需直接编辑数据.使用者可以利用Sed所提供的20多种不同的函数,进行不同的编辑动作. Sed ...

  7. 全志V3S 调试串口更改或关闭

    有时项目外设比较多,很容易造成串口不够用的情况. 最近就遇到了,新增加一个GPS模块串口的,串口现在外部只有原来的调试串口可以用,所以 尝试将调试口更改为普通串口. 经过网上看大神们的文章和自己摸索, ...

  8. 洛谷 P1478 陶陶摘苹果(升级版) 题解

    这道题只要会自定义cmp恰当地进行排序,其他部分没有什么大问题. 上代码: 1 #include<bits/stdc++.h> 2 using namespace std; 3 int n ...

  9. 字符编码,存储引擎及MySQL字段类型相关知识点

    字符编码,存储引擎及MySQL字段类型相关知识点 一.字符编码 1.在终端输入\s,查看数据库的基本信息(当前用户,版本,编码,端口号) 2.默认的配置文件是my-default.ini 拷贝上述的文 ...

  10. 跟着廖雪峰学python 003

    ​ ​编辑 列表和元组 list 是一种有序.可变的数据类型,可添加删除其中的元素. len()函数:可以获取列表元素的个数 classmates = ['Micheal' , 'Bob' , 'Ja ...