开发攻城狮的辛酸—如何进行APP卡顿检测

28 篇文章 0 订阅
20 篇文章 1 订阅

一款好的APP在使用上一定是流畅的,性能问题中卡顿问题常常让人无从下手,如果APP已经上线有可能还会收到用户的差评,应用卡顿不像闪退一样直观明了,可以直接通过异常信号或调用栈分析得到,这篇文章一起来看看如何进行APP卡顿检测。

1.如何定义发生了卡顿?

当出现 App的FPS平均值小于30,最小值小于24,说明安卓应用发生了卡顿。

2.卡顿分析方法

造成卡顿的原因有很多,但是最终都会反映到cpu时间上。

CPU时间包含了用户时间和系统时间。

用户时间:执行用户态应用程序代码所消耗的时间。

系统时间:执行内核态系统调用所消耗的时间,包括I/O,锁,中断和其他系统调用所消耗的时间。

3.使用top命令查看应用进程CPU消耗情况

3.1 使用adb shell top命令来查看CPU消耗情况

注意:

%CPU显示的是进程占用一个核的百分比,而不是整个cpu(N核)的百分比,有时候可能大于100,那是因为该进程启用了多线程占用了多个核心,所以有时候我们看该值得时候会超过100%,但不会超过总核数*100

3.2 获取指定进程的CPU,内存消耗,并设置刷新间隔

4.使用ps命令

除了top命令可以比较全面的查看整体CPU信息之外,如果我们只想查看当前指定进程已经消耗的CPU时间占系统总时间的百分比或其他状态信息的话,可以使用ps命令。

5.使用dumpsys cpuinfo命令

6.通过读取/proc/stat 文件获取总的CPU时间\

采样两个足够短的时间的CPU快照,即需要两次去读取/proc/stat文件 获取两个时间点对应的数据 。

最后得到系统CPU的使用率

假如:totalCPUUse=(totalCPUTime-idleCPUTime)/totalCPUTime=(31721-28728)/31721=9%

可以看到,前后两次时间点的CPU使用率大概为9%。说明我们系统的CPU处于空闲状态,如果CPU使用率一直大于60%,则表示系统处于繁忙状态,此时就需要进一步分析用户时间和系统时间的比例,看看到底是系统占用了CPU还是应用进程占用了CPU。

不得不说,传统的卡顿监测方法,往往都有一定的弊端,不是需要大量排除时间就是步骤太过繁琐,根据此类情况可以使用友盟+U-APM应用性能监控平台,卡顿分析功能进行检测分析,帮主开发者快速问题筛选,复现问题场景,强大的数据收集能力给开发者带来很大的帮助,U-APM卡顿分析能力根据U-APM提供的监控SDK 捕获所监控App主线程消息执行超情况,从而反馈出详细信息,方便开发者进行查看,帮助提高用户使用体验。

接入友盟后还可使用实时、可靠、全面的应用崩溃、ANR、自定义异常等捕获能力,及卡顿、启动分析等性能能力,支持多场景、多通道智能告警监控,帮助开发者高效还原异常、卡顿用户的访问路径和业务现场,缩短故障排查时间。支持错误细查,智能诊断能力。

总结一下,性能问题想要解决,肯定要先找出问题的根本原因,才能进行更优质的技术修复,如果遇到紧急情况,建议使用友盟+U-APM工具,可以弥补传统方法的不足。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值