Android性能优化:使用Android Studio的Profiler分析函数执行时间

Profiler是Android Studio内置的一个分析app性能的利器,是优化app必不可少的帮手。功能涵盖了方法执行,内存分配,流量使用,耗电量等诸多方面。
今天就从实战的角度聊一聊,如何使用Profiler分析方法执行时间。
Profiler位于底部工具栏
在这里插入图片描述
点开后是这样的:
在这里插入图片描述
点击左上角的加号,可以看到正在运行的项目的进程。
在这里插入图片描述
点击进程后,右侧开始滚动关于该进程的信息,第一行是cpu,第二行是内存,第三行是流量,第四行是耗电量。
在这里插入图片描述
分析方法执行时间,使用的是第一行cpu。点击第一行,就会进入cpu界面,这里详细列举了cpu的各项数据,如当前的线程数量,cpu的使用率。
在这里插入图片描述
不同的Android Studio版本,这里的内容可能会有些许不同。
选择Java Method Trace Recording,点击record记录方法执行流程。注意,记录时间太久会导致卡死,根据个人电脑配置,控制记录时间。
记录结束后,页面的左侧多出来一个记录文件,我们可以选择Export导出到其他位置,下次可以跳过记录过程,直接打开文件查看方法执行流程。
在这里插入图片描述
页面的右侧有两个区域。两个区域的内容是一样的,但是展示的形式略有不同,我把左侧称为图形区,右侧称为文字区。图中的图形区显示有正在运行4个线程
在这里插入图片描述
看到main线程,相信小伙伴就很熟悉了,如果我们打算排查掉帧卡顿的问题,就要从main线程入手,点击main线程,将main线程选中,此时mian线程将会展开,展开后可以看到记录过程中,java代码执行的所有方法以及执行时间。
在这里插入图片描述
项目中main线程执行的方法非常多,为了方便查看,务必使用以下快捷键进行操作,其实操作方式已经在前面的文字区展现出来了,就是下图红框内的文字,W放大,S缩小,A左移,D右移。
在这里插入图片描述
如果不用快捷键,想想该如何查看下图这个区域。在我没有掌握快捷键之前,想要查看一个非常微小的区域,经常选到人崩溃。
在这里插入图片描述
线程中倒三角的结构,同时展现了方法的调用结构和执行耗时。以上图举例:
首先调用了Handler的dispatchMessagedispatchMessage的长度代表了方法相对执行耗时,紧邻dispatchMessage下方只有ActivityThreadH的handleMessage,说明dispatchMessage内部只执行了这一个方法,而紧邻handleMessage的下方则有handleProfilerControlcheckHandleMessagetTime两条,说明handleMessage调用了两个方法,对比两个方法条,handleProfilerControl的执行时间长于checkHandleMessagetTime
前面提到图形区和文字区是对应的,如果上述对图形区的描述不够清晰,点击文字区的Top Down栏,下图框中的内容直观的展示了上述流程。
在这里插入图片描述
这种方式不仅可以分析自己的项目,也可以用来学习源码,查看系统源码和三方源码的执行流程。
如果我们只关心某个方法的耗时,可以在图中搜索栏进行搜索,图形区和文字区都会以高亮的形式,把找到的方法显示出来,非常方便定位问题。
在这里插入图片描述
以上是有关方法执行流程的,Top Down右侧的Flame Chart对整个记录过程中每个方法的执行耗时进行了汇总,呈正三角的形状,方法越靠近底部,耗时越长。
在这里插入图片描述
以上profiler的功能,搭配实时帧率检测,可以轻松发现和定位掉帧问题,提升app流畅度。

  • 12
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值