专项测试-App性能分析
app性能
Activity是Android组件中最基本也是最为常见用的四大组件(Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器)之一 [1] 。一个app的启动由多个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性能分析的更多相关文章
- Android APP性能分析方法及工具
近期读到<Speed up your app>一文.这是一篇关于Android APP性能分析.优化的文章.在这篇文章中,作者介绍他的APP分析优化规则.使用的工具和方法.我觉得值得大家借 ...
- APP 性能分析工作台——你的最佳桌面端性能分析助手
目前 MARS-App 性能分析工作台版本为开发者提供Fastbot桌面版的服务. 旨在帮助开发者们更快.更便捷地开启智能测试之旅,成倍提升稳定性测试的效率. 作者:字节跳动终端技术--王凯 背景 F ...
- App 性能分析
关键因素: ---- Instrument 性能分析神器 1. 启动时间 应用启动时间长短对用户第一次体验至关重要,同时系统对应用的启动.恢复等状态的运行时间也有严格的要求,在应用超时的情况下系统会直 ...
- jacoco覆盖率工具测试及性能分析
ant版本:https://ant.apache.org/bindownload.cgi jdk版本 注: ant 1.10 ---> jdk1.8 ant 1.9 ---& ...
- ios app性能分析
苹果app的流畅性一般比安卓的要好的多.应该是和苹果系统的设计理念同样,早期的iphone4曾经是绝对单任务,仅仅能做一件事情,尽管添加了后台能够.音乐播放,定位等有限的服务.可是大多数普通应用切换到 ...
- 【App性能分析】:tracelog分析法
tracelog可以记录每个OpenGL函数调用的消耗时间,所以很多时候用来作performance分析.目前只支持安卓4.1以上的版本设备 1,目前Android Device Monitor最新的 ...
- APP性能分析1
我们使用云测试平台对产品进行了性能测试,情况如下: 详见这里.
- app 性能
Android App优化之性能分析工具 https://www.jianshu.com/p/da2a4bfcba68 -------------- 系列文: 背景:Android App优化, 要怎 ...
- 数据切分——Mysql分区表的建立及性能分析
Mysql的安装方法可以参考: http://blog.csdn.net/jhq0113/article/details/43812895 Mysql分区表的介绍可以参考: http://blog.c ...
随机推荐
- LintCode 550 · Top K Frequent Words II
题目描述 题目链接 思路 由于要统计每个字符串的次数,以及字典序,所以,我们需要把用户每次add的字符串封装成一个对象,这个对象中包括了这个字符串和这个字符串出现的次数. 假设我们封装的对象如下: p ...
- Java面向对象04——构造器
类中的构造器也成为构造方法,是在进行创建对象的时候必须调用的.并且构造器有以下两个特点: 必须和类的名字相同 必须没有返回值,也不能写void package oop.demon01.demon02 ...
- 我的大学Android开发学习之路——从开始到微信/支付宝/抖音Offer
前言 笔者2016年高考考入华中科技大学计算机科学与技术专业. 2017年底(大二寒假)拿到今日头条(字节跳动)深圳研发中心Android开发实习生Offer,在深圳研发中心实习至2018年3月. 2 ...
- .net core 响应的json数据驼峰显示问题。
在.net core webapi中,默认响应的json数据是以驼峰显示的,即首字母小写的方式.如果让其正常显示,只需要在全局配置即可.代码如下图: 配置之后,响应数据就不会再以驼峰的形式展示了.而是 ...
- Java-Collection、Map及Array之间的转换
1 List -> Map 设个User类: public class User { private String userName; private String userId; privat ...
- netty系列之:内置的Frame detection
目录 简介 Frame detection DelimiterBasedFrameDecoder FixedLengthFrameDecoder LengthFieldBasedFrameDecode ...
- BZOJ 4826 影魔
本题可以采用主席树的在线做法,只不过常数会 \(super\) 大. 和其他题解差不多,我们先要求出第 \(i\) 个数的 \(l_i\) 和 \(r_i\) ,其中 \(l_i\) 表示左边第一个比 ...
- [总结&搬运]用户测试101
原文地址:User Testing 101 可用性测试是什么? 可用性测试是一种非常流行的用户研究方式.在可用性测试环节中,通常由主持人.参与者和测试任务三部分组成.主持人会发布测试任务,要求参与者使 ...
- c++本地动态连接库代码
c++本地动态连接库代码 1 #pragma once 2 #include "stdafx.h" 3 4 #ifdef PERSON_EXPORTS 5 #define PERS ...
- Contos 7.x 中Docker安装以及使用
Docker是什么? Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中, 然 ...