温馨提示:这篇文章已超过412天没有更新,请注意相关的内容是否还可用!
摘要:本文介绍了Android应用程序的性能指标(一),涵盖了应用启动速度、响应时间、资源消耗、电池寿命、流畅度和稳定性等方面。文章详细解释了每个指标的含义和重要性,并提供了优化建议,以提高用户体验和应用程序性能。通过关注这些性能指标,开发人员可以更好地了解应用程序的性能状况,从而进行针对性的优化和改进。
文章目录
内存测试
在Android系统中,每个应用的内存占用包括与其他进程共享的内存和APP独占的私有内存两部分,行业内通常会使用PSS(USS+共享的内存)来判断APP的内存开销,查看指令为:adb shell dumpsys meminfo 应用包名或adb shell procrank。
1、1 内存测试
1. 空闲状态下,应用内存消耗。
2. 中等规格状态下(操作时间较长),应用内存消耗。
3. 满格状态下(操作时间较短),应用内存消耗。
4. 测试过程中,同时要关注内存峰值、泄漏、内存释放、压测后内存使用情况。
较容易出现内存泄漏的部分场景:
1. activity间的切换,如果非静态的匿名类对象没有被回收,MainActivity就不会被回收,其关联的资源和视图都不会被回收,发生严重的内存泄漏。
2. 连续查看和发送大图片,反复观看返回继续观看等操作,都有可能因为和之前的内存资源没释放而导致内存不断增长。
3. 有执行异步线程的场景后如果未给线程进行结束,会引起内存泄漏,因为activity的结束销毁不会把正在运行的thread也结束回收掉,比如后台下载或加载东西时关闭activity。
4. 在activity关闭时Handler还没结束,会导致内存泄漏,例如一些界面UI还在刷新时关闭activity。
5. 从登录界面登录账号后,登录界面的activity只是退到后台或是被登录后的activity覆盖,像这种过渡界面的activity容易出现未去摧毁而出现内存泄漏。
1、2 内存场景问题
1. 内存抖动:频繁的GC,导致UI卡顿。
2. 内存溢出:应用申请的内存不够引发的。
3. 内存泄漏:应用结束后无法释放内存空间,存在大量次数就会导致内存泄漏。
4. 频繁GC(垃圾收集)。
1、3 测试标准
测试场景中内存不会出现持续上升或短时间内出现内存抖动情况和无故申请过大内存的情况。
1、4 测试点
1. 空闲状态:切换至后台或者启动后不做任何操作,消耗内存最少。
2. 中强度状态:时间偏长的操作应用。
3. 高强度状态:高强度使用应用,可以跑monkey来测试(通常用来测试内存泄漏)。
1、5 关注点
1. 退出某个页面后,内存是否有回落,如果没有及时回落,且程序自动GC或者手动GC,那便可确认有问题,GC即(Garbage Collector,垃圾回收器)是指将废弃的内存重新回收再次使用的过程。
2. 进行某个操作后,内存是否增长过快,如果增长过快,也有可能存在风险,需重复操作确认。
CPU测试
CPU测试主要关注的是cpu的占用率,很多时候,我们玩手机时会出现发热发烫,那是因为CPU使用率过高,CPU过于繁忙,会使整个手机无法响应用户,导致用户体验差,也容易引起ANR等一系列问题,静态不超过5%,后台静默不超过1%,一般运行状态不超过30%,高负荷运行不超过75%,峰值不超过90%,获取CPU数据的方法包括:adb shell dumpsys cpuinfo | grep packagename和adb shell top -d 1等,具体获取方法可以参考相关文档或教程,在测试过程中要关注空闲状态、中等规格状态、满规格状态下的CPU消耗情况,以及针对性的场景测试,面对问题时,如ANR现象,需要搜索ANR在logcat文件里的信息以及使用traceview查看分析Trace文件来解决。
GPU(过度绘制)
GPU渲染是指在一个像素点上绘制多次(超过一次),过度绘制对动画性能的影响是极其严重的,想要流畅的动画效果,一定不能忽视过度绘制,获取数据的方法包括进入开发者选项->调试GPU过度绘制->显示过度绘制区域和使用adb命令等,测试标准是不允许出现黑色像素、不允许存在4X过渡绘制、不允许存在面积超过屏幕1/4区域的3X过渡绘制等,可能引起掉帧的原因包括手机性能差、横竖屏切换、动画效果太多、GC太多、UI线程阻塞、界面试图结构过于复杂等,在进行FPS测试时需要注意ListView界面的帧率、可滑动界面帧率、动画较多的页面操作帧率以及针对性的场景测试等,流畅度标准以60FPS为标准(FPS为每秒绘制的帧数),每一帧的时间不超过16.6ms,画面流畅不卡顿,建议最低大于50FPS,如果出现掉帧情况需要及时处理和优化,在进行帧率检测时可以使用开发者模式中的相关功能或工具来辅助分析。
还没有评论,来说两句吧...