专项测试

app性能

Activity是Android组件中最基本也是最为常见用的四大组件(Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器)之一 [1]  。一个app的启动由多个Activity 组成。

Activity启动流程

1、调起app,创建白窗口,启动进程 (启动前)

2、Application onCreate先创建Object,再创建主线程(main thread)用于加载主要的Activity

主要流程

Application OnCreate

加载第三方的sdk

Activity OnCreate

加载自身的逻辑

发送远程数据请求xxx.json

渲染界面List

app启动性能指标

冷启动 

简单讲app冷启动可以分为两个阶段

第一阶段

1、加载并启动app
2、启动后立即显示一个空白的启动窗口
3、创建app进程

第二阶段

1、创建app对象
2、启动主进程
3、创建MainActivity
4、渲染视图
5、执行onLayout
6、执行onDraw

暖启动 

  暖启动时由于app的进程仍然存在,只执行冷启动第二阶段流程

 第二阶段

1、创建app对象
2、启动主进程
3、创建MainActivity
4、渲染视图
5、执行onLayout
6、执行onDraw

热启动

系统将activity放到前台。如果应用程序的所有activity存在内存中,则应用程序可以避免重复对象初始化、渲染、绘制操作。

若内存不足导致对象被回收,则需要在热启动时重建对象,此时与冷启动时将界面显示到手机屏幕上一致

首屏启动

app启动性能分析流程

  • adb logcat
  • 录屏+视频拆帧 (1s拆成10帧数)
  • uiautomator等自动化工具200ms巡检界面变化traceview
  • 硬埋点

使用adb logcat

  • package=com.xeqiu.android
  • 清理缓存数据:adb shell pm clear $package
  • 停止进程: adb shell am force-stop $package
  • 启动app: adb shell am start -S-W $package/.view.WelcomeActivity Alias
  • 获取数据:adb logcat | grep -i displayed

adb logcat 结果

  • startTime:记录刚准备调用startActivity AndWait()的时间点;
  • endTime:记录startActivity AndWait()函数调用返回的时间点
  • WaitTime: startActivity AndW ait()调用耗时
  • WaitTime = endTime - startTime

使用ffmpeg拆针

  • adb shell am force stop $package   环境清理
  • adb shell screenrecord --bugreport --time-limit 30 /data/local/tmp/xueqiu.mp4 &
  • adb shell am start -S -W $package/.view.WelcomeActivityAlias
  • wait
  • adb pull /data/local/tmp/xueqiu.mp4  录制启动视频
  • ffmpeg -i xueqiu.mp4 xueqiu.gif  对视频进行拆帧
  • ffmpeg -i xueqiu.mp4 -r 10 frames_ %03d.jpg  格式化为图片
  • 对图片进行分析得出性能结果

专项测试-App性能分析的更多相关文章

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

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

  2. APP 性能分析工作台——你的最佳桌面端性能分析助手

    目前 MARS-App 性能分析工作台版本为开发者提供Fastbot桌面版的服务. 旨在帮助开发者们更快.更便捷地开启智能测试之旅,成倍提升稳定性测试的效率. 作者:字节跳动终端技术--王凯 背景 F ...

  3. App 性能分析

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

  4. jacoco覆盖率工具测试及性能分析

    ant版本:https://ant.apache.org/bindownload.cgi jdk版本 注: ant 1.10    --->   jdk1.8 ant 1.9      ---& ...

  5. ios app性能分析

    苹果app的流畅性一般比安卓的要好的多.应该是和苹果系统的设计理念同样,早期的iphone4曾经是绝对单任务,仅仅能做一件事情,尽管添加了后台能够.音乐播放,定位等有限的服务.可是大多数普通应用切换到 ...

  6. 【App性能分析】:tracelog分析法

    tracelog可以记录每个OpenGL函数调用的消耗时间,所以很多时候用来作performance分析.目前只支持安卓4.1以上的版本设备 1,目前Android Device Monitor最新的 ...

  7. APP性能分析1

    我们使用云测试平台对产品进行了性能测试,情况如下:   详见这里.

  8. app 性能

    Android App优化之性能分析工具 https://www.jianshu.com/p/da2a4bfcba68 -------------- 系列文: 背景:Android App优化, 要怎 ...

  9. 数据切分——Mysql分区表的建立及性能分析

    Mysql的安装方法可以参考: http://blog.csdn.net/jhq0113/article/details/43812895 Mysql分区表的介绍可以参考: http://blog.c ...

随机推荐

  1. Docker介绍及安装详解

    1:Docker简介 Docker 是一种运行于 Linux 和 Windows 上的软件,用于创建.管理和编排容器.Docker 是在 GitHub 上开发的 Moby 开源项目的一部分.Docke ...

  2. FreeRTOS-04-内核控制函数+时间管理函数

    说明 本文仅作为学习FreeRTOS的记录文档,作为初学者肯定很多理解不对甚至错误的地方,望网友指正. FreeRTOS是一个RTOS(实时操作系统)系统,支持抢占式.合作式和时间片调度.适用于微处理 ...

  3. 数据结构算法学习之队列(数组模拟java实现)

    数组模拟队列 数组模拟队列 今天学习数组模拟队列.队列常用于生活中的方方面面.比如银行叫号排队.实际上就是队列.所有人抽号排队.先去的先抽号.所以靠前的号最后会先被叫到然后出队.后边的会随之往前移位. ...

  4. 题解CF757B

    题目 题意:在 \(s\) 数组中找出尽可能多的数使得他们的最大公约数 \(>1\) 既然最大公约数 \(>1\),\(s\) 数组的值域是 \(1 \le s_i \le 10^5\), ...

  5. 小白自学vue的第一天,加油!

    一.插值的操作 1.Mustache语法 也就是双大括号(翻译过来就是胡须的意思) 2.v-once指令 加了v-once数据不会随着数据的改变而改变,只会渲染一次 3.v-html指令 可以解析HT ...

  6. git的基本操作命令与基础

    本文针对window用户进行git操作 1.git是分布式版本控制系统,需要用户名和邮箱作为一个标识.在任何文件夹中点击右键,选择Git Bash Here ,配置全局用户名和邮件或者局部用户名和邮件 ...

  7. Sqli-Labs less54-65

    less-54 从54关开始,就是提升巩固的关卡,并且开始慢慢偏向实际. 第54关就是对输入的次数做了限制,需要在十次之内获取信息,否则就会刷新表名列名等信息. 以下的步骤截图就直接从上帝视角截图说明 ...

  8. Sqli-Labs less13-16

    less-13 首先,输入用户名和密码,发现只有成功和失败两种显示,没有数据回显: 然后我们抓包拿到数据: 我们通过上述观察,已经知道这是典型的盲注,可以采用布尔盲注或者时间盲注. 构造注入语句:un ...

  9. 使用Java8改造出来的模板方法真的是yyds

    GitHub 21.3k Star 的Java工程师成神之路,不来了解一下吗! GitHub 21.3k Star 的Java工程师成神之路,真的不来了解一下吗! 我们在日常开发中,经常会遇到类似的场 ...

  10. vs code 调试angular2

    调试步骤: 1.安装nodejs 2.安装vscode 3.vscode安装debugger for chrome插件 4.选择调试->打开调试配置,选择chrome配置,打开lauch.jso ...