Android基础性能检测与分析

本文详述了Android性能检测的关键方面,包括UI性能分析、应用启动时间、内存管理和耗电量分析。UI性能通过检查帧率和过度绘制来优化。应用启动时间的计算和白屏问题对用户体验至关重要。内存分析探讨了内存优化原则、内存区别的理解以及MAT和LeakCanary等内存泄露工具的使用。此外,还介绍了TrepnProfiler、TuneUpKit和阿里-易测等性能检测工具,以及云测平台在性能和兼容性测试中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文内容:基于Android基础性能检测与分析

版权声明:本文为原创文章,未经允许不得转载

博客地址:http://blog.youkuaiyun.com/kevindgk

前言

最近一段时间以来,开始深入学习App的性能检测、分析和优化等方面的内容,接触的越多越发现相关的技能点太多了,而且说起来容易做起来难。尤其是学习到持续自动化框架的方案和搭建,才觉得自己了解的不过是冰山一角。只能说,学无止境,任重而道远!

不过,在学习的过程中,发现了很多非常实用的技巧以及很棒的性能优化和检测工具,能够帮助自己及时发现程序的一些问题,比如UI界面的性能、启动时间的优化、OOM异常、内存泄露、电量分析等,并且对自己的软件的整体性能有一个综合的分析。

本文主要的研究方向都是来自与《Android 群英传 之神兵利器》,只不过小编整理了内部较为实用的内容,然后深入研究了一下。

GO!GO!GO!

1.UI性能分析

目标:减少绘图和显示数据的等待时间,使帧率更加平稳、连贯,给人更好的视觉体验。

  • 16msUI绘制准则

一般来说,Android设备的屏幕刷新率为60帧/s,要保持画面流畅不卡顿,要求每一帧的时间超过1000/60=16.6ms,这就是16ms的黄金准则,如果中间的某些帧的渲染时间超过16ms,就会导致这段时间的画面发生了跳帧,因此原本流畅的画面变发生了卡顿。

在Android 5.0之后,系统增加了Render Thread(渲染线程),来进行异步绘制,即使某一帧发生延迟也不会影响下一帧的绘制。

在手机的开发者选项中打开Pofile GPU Rending(剖析GPU渲染)选项,就可以看到底部的柱状图,表示的就是渲染的时间。一条绿色的横线表示的就是16ms(17ms)基准线,如果高于该线,就表示人眼会觉得绘制的不流畅。通过这种方式,就可以数据化的分析界面的流畅度,然后再逐步找到问题所在,优化我们的界面。

在Android Studio中,Android Monitor->Monitors->GPU界面也可以看到该信息,但是要求安装AS插件,并且要求向手机安装追踪GPU渲染数据的应用,要求手机有root权限才可以。

  • 布局

如果使用LinearLayout,则一定要保证层级不能太深,google官方建议用户界面的View不宜超过8层;

如果使用RelativeLayout,则一定要尽量避免嵌套,因为相对布局在测量的时候往往需要多次测量,嵌套时十分耗时。

eg:可以使用include标签进行view的复用;使用drawableleft方法来进行控件组合。

最根本的还是尽量减少View的数量。

  • 图形过度绘制

如果控件出现了叠加,而且都有背景,就会造成重叠部分多次绘制,浪费了资源和时间。可以打开开发者选项中的Debug GPU Overdraw,可以检测过渡绘制,即一块区域经过了几次叠加绘制:

​ 原色:没有过度绘制

​ 蓝色:1次过度绘制

​ 绿色:2次过度绘制

​ 粉色:3次过度绘制

​ 红色:>=4次过度绘制

修改建议:

①控件尽量避免重叠摆放;

②当控件与主背景色颜色相同时,移除不需要背景色;

③自定义view在绘制的时候,使用clipRect属性减少重绘区域。

2.应用启动时间计算以及程序启动白屏问题

这里的应用启动时间指的是,安装完应用以后的第一次启动,这也是评判一个App性能好坏的重要指标,直接影响用户的对应用的第一印象。

可以通过ADB命令来统计应用从打开到开启第一个界面的时间:

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值