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. 学会了selenium 模拟鼠标操作,你就可以偷懒点点点了

    前言 我们在做 Web 自动化的时候,有时候页面的元素不需要我们点击,值需要把鼠标移动上去就能展示各种信息. 这个时候我们可以通过操作鼠标来实现,接下来我们来讲一下使用 selenium 做 Web ...

  2. UOJ33 [UR#2] 树上 GCD

    UOJ33 [UR#2] 树上 GCD 简要题意: 给定一棵有根树,对于每个 \(i \in [1,n)\),求出下式的值: \[Ans[i] = \sum_{u<v} \gcd({\rm{di ...

  3. MySql树形结构(多级菜单)查询设计方案

    背景 又很久没更新了,很幸运地新冠引发了严重的上呼吸道感染,大家羊过后注意休息和防护 工作中(尤其是传统项目中)经常遇到这种需要,就是树形结构的查询(多级查询),常见的场景有:组织架构(用户部门)查询 ...

  4. [cocos2d-x]关于菜单项

    菜单项的分类 MenuItem:菜单项类,它是一个虚基类,因此必须实现它的子类,再把子类对象赋给父类指针. MenuItemFont:字体菜单项. MenuItemAtlasFont:字体菜单项,和第 ...

  5. P8701 [蓝桥杯 2019 国 B] 第八大奇迹

    简要题意 你需要维护一个长度为 \(L\) 的序列 \(a\),初始时全部都是 \(0\),有 \(N\) 个操作,支持: C p x,将 \(a_p\) 修改为 \(x\). Q a b,输出 \( ...

  6. js节流防抖 减少服务器请求

  7. WPF中使用WebView2控件

    目录 WebView2简介 概述 优势 支持的运行时平台 进程模型 基本使用 安装WebView2运行时 安装WebView2Sdk 打开一个网页 导航事件 打开一个网页的过程 更改url的过程 空u ...

  8. java 入门与进阶P-6.5+P-6.6

    字符串操作 字符串是对象,对它的所有操作都是通过" . " 这个运算符来进行的 字符串.操作 他表示对.左边的这个字符串做右边的那个操作 这里的字符串可以是变量也可以是常量 Str ...

  9. 【学习笔记】XR872 GUI Littlevgl 8.0 移植(文件系统)

    不得不提 在移植的过程中,发现 LVGL 的文件操作接口并不十分完善,在我看来, LVGL 的文件操作接口,应该更多的是为了 LVGL 内部接口方便读取资源文件而设立的,例如读取图像文件,加载字库文件 ...

  10. vue3 ts遇到的问题

    main.ts中的 createApp(App),只作用于一个,如果,有两个,则并不是一个对象,另一个会不生效