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

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

你可能感兴趣的:(android,App优化,android,android,studio,android-studio)