专项测试

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. 抽奖动画 - lao虎机抽奖

    本文介绍一个lao虎机抽奖动画的实现,lao虎机抽奖在各类商家营销活动中非常常见,这里主要介绍动画的实现过程,其他细节不做详细分析. ps:lao虎机是敏感词,博客园不允许出现,所有老用拼音. 1. ...

  2. Tensor:Pytorch神经网络界的Numpy

    摘要:Tensor,它可以是0维.一维以及多维的数组,你可以将它看作为神经网络界的Numpy,它与Numpy相似,二者可以共享内存,且之间的转换非常方便. 本文分享自华为云社区<Tensor:P ...

  3. 聊聊 PC 端自动化最佳方案 - WinAppDriver

    1. 前言 大家好,我是安果! 一提到自动化,可能大家想到的是 App 端的 Appium.Airtest.AutoJS,亦或是 Selenium.Puppeteer.Cypress 等 Web 端的 ...

  4. Maven 基础标签之版本管理和冲突解决

    前言 我们在做java项目的时候由于jar包太多,我们就需要使用maven做项目管理,管理项目的jar包依赖,包括打包上线 maven基础 Maven 是一个项目管理工具,主要用于项目构建,依赖管理, ...

  5. 面试反杀「GitHub 热点速览 v.21.33」

    作者:HelloGitHub-小鱼干 作为一个应聘者,面试的时候经常会被面试官问:你有什么问题要问我吗?为了避免这种临时想不到问题的尴尬,reverse-interview-zh 会教你下反向操作,提 ...

  6. Linux下基于SQLite3 实现商店商品管理系统

    文章目录 一.SQLite相关C接口 重要接口 打开数据库 插入信息 查询 二.程序要求 三.程序说明 四.实现代码 水果店账单管理系统 一.SQLite相关C接口 如果第一次直接在命令行安装sqli ...

  7. Redis应用场景及缓存问题

    1.应用场景 (1)   缓存 缓存机制几乎在所有的大型网站都有使用,合理地使用缓存不仅可以加快数据的访问速度,而且能够有效地降低后端数据源的压力.Redis 提供了键值过期时间设置,并且也提供了灵活 ...

  8. Python小白的数学建模课-17.条件最短路径

    条件最短路径问题,指带有约束条件.限制条件的最短路径问题.例如: 顶点约束,包括必经点或禁止点的限制: 边的约束,包括必经路段.禁行路段和单向路段:无权路径长度的限制,如要求经过几步或不超过几步到达终 ...

  9. SQL 练习23

    查询男生.女生人数 SELECT Ssex,COUNT(Ssex) 人数 from Student GROUP BY Ssex

  10. Java:学习什么是多线程

    线程是什么 进程是对CPU的抽象,而线程更细化了进程的运行流程 先看一下这个图 线程和进程的关系有 进程中就是线程在执行,所有(主)线程执行完了进程也就结束了 多个线程从1秒钟是同时运行完成,从1纳秒 ...