Android方法调用耗时分析工具:开发者模式-System Tracing

本文介绍了如何利用Android设备上的SystemTracing功能来分析应用程序的性能问题,特别是界面卡顿。通过开启和关闭录制跟踪记录,可以生成trace文件,并在Perfetto网站上进行详细分析。通过对特定方法调用的耗时跟踪,如testMethod1、testMethod2和testMethod3,可以识别出应用中耗时较长的部分,从而进行性能优化。
摘要由CSDN通过智能技术生成

简介

搭载 Android 9(API 级别 28)或更高版本的设备包含一个名为 System Tracing 的系统级应用。此应用类似于 systrace 命令行实用工具,但允许您直接从测试设备本身录制跟踪记录,而无需插入设备并通过 ADB 连接到该设备。然后,您可以使用此应用与开发团队共享根据这些跟踪记录得出的结果。在解决应用中与性能相关的错误(例如启动速度慢、转换速度慢或界面卡顿)时,录制跟踪记录特别有用。

本文主要记录如何通过该功能分析查看某个app的方法调用耗时情况,方便我们排查界面卡顿等问题

功能路径

开发者模式 -> 系统跟踪(System Tracing)

功能使用

  1.  点击“录制跟踪记录(Record trace)”按钮开始记录
  2. 开始对我们需要测试的app进行各种操作
  3. 再次点击“录制跟踪记录(Record trace)”按钮关闭该功能以结束记录
  4. 通知栏会弹出录制结束提示,点击该通知可以分享出去或者在电脑上执行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()
    }
}

结果分析

  1. 打开"https://ui.perfetto.dev/#!/"网站
  2. "Open trace file"选择我们获取到的trace文件,后缀名是".perfetto-trace"
  3. 网页搜索我们要分析的app包名
  4. 展开要分析app包名下的进程,也就是能看到"activityStart"那部分
  5.  选中需要检查的时间段,然后底部会出现统计结果,切换到“Slices”就可以查看到不同阶段耗时(Wall duration)情况
  6. 其中"testMethod3" "testMethod2" "testMethod1" 就是是代码中trace统计耗时的方法,通过这个就可以看到哪个方法耗时较多了

官方介绍:https://developer.android.google.cn/topic/performance/tracing/on-device

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值