Android方法调用耗时分析工具:开发者模式-System Tracing
Posted guangdeshishe
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android方法调用耗时分析工具:开发者模式-System Tracing相关的知识,希望对你有一定的参考价值。
简介
搭载 android 9(API 级别 28)或更高版本的设备包含一个名为 System Tracing 的系统级应用。此应用类似于
systrace
命令行实用工具,但允许您直接从测试设备本身录制跟踪记录,而无需插入设备并通过 ADB 连接到该设备。然后,您可以使用此应用与开发团队共享根据这些跟踪记录得出的结果。在解决应用中与性能相关的错误(例如启动速度慢、转换速度慢或界面卡顿)时,录制跟踪记录特别有用。
本文主要记录如何通过该功能分析查看某个app的方法调用耗时情况,方便我们排查界面卡顿等问题
功能路径
开发者模式 -> 系统跟踪(System Tracing)
功能使用
- 点击“录制跟踪记录(Record trace)”按钮开始记录
- 开始对我们需要测试的app进行各种操作
- 再次点击“录制跟踪记录(Record trace)”按钮关闭该功能以结束记录
- 通知栏会弹出录制结束提示,点击该通知可以分享出去或者在电脑上执行adb命令"adb pull /data/local/traces/ ."以获取trace文件
打开“显示快捷设置图片”功能,在通知栏顶部会出现快捷开关图标,可以快捷开始/结束记录
测试app
包名:com.example.myapplication
package com.example.myapplication
import android.os.Trace
class MethodTest {
fun testMethod1() {
Trace.beginSection("testMethod1")
Thread.sleep(1000)
Trace.endSection()
}
fun testMethod2() {
Trace.beginSection("testMethod2")
Thread.sleep(2000)
Trace.endSection()
}
fun testMethod3() {
Trace.beginSection("testMethod3")
Thread.sleep(3000)
Trace.endSection()
}
}
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val methodTest = MethodTest()
methodTest.testMethod1()
methodTest.testMethod2()
methodTest.testMethod3()
}
}
结果分析
- 打开"https://ui.perfetto.dev/#!/"网站
- "Open trace file"选择我们获取到的trace文件,后缀名是".perfetto-trace"
- 网页搜索我们要分析的app包名
- 展开要分析app包名下的进程,也就是能看到"activityStart"那部分
- 选中需要检查的时间段,然后底部会出现统计结果,切换到“Slices”就可以查看到不同阶段耗时(Wall duration)情况
- 其中"testMethod3" "testMethod2" "testMethod1" 就是是代码中trace统计耗时的方法,通过这个就可以看到哪个方法耗时较多了
官方介绍:https://developer.android.google.cn/topic/performance/tracing/on-device
以上是关于Android方法调用耗时分析工具:开发者模式-System Tracing的主要内容,如果未能解决你的问题,请参考以下文章