Android 使用 Debug.startMethodTracing 分析方法耗时

参考 Generate Trace Logs by Instrumenting Your App

官网提供了 trace 工具来分析方法耗时。

生成 trace 文件

package com.test.luodemo.trace;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.os.Debug;
import android.util.Log;

import com.test.luodemo.R;

public class DebugActivity extends AppCompatActivity {

    public static final String TAG = "DebugActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //save to ./data/media/0/Android/data/com.test.luodemo/files/dmtrace.trace
        Debug.startMethodTracing();
        setContentView(R.layout.activity_debug);
        test1();
        test2();
        Debug.stopMethodTracing();
    }

    private void test1(){
        Log.d(TAG, "test1");
    }
    
    /**
     * 模拟耗时方法
     * */
    private void test2(){
        try {
            Thread.sleep(500);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
    }
}
  • Debug.startMethodTracing(); 启动方法跟踪 。不传参数,默认生成 ./data/media/0/Android/data/<应用包名>/files/dmtrace.trace
  • Debug.stopMethodTracing(); 停止方法跟踪。

Debug.startMethodTracing() 可以传入参数,示例,加个时间戳

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //save to ./data/media/0/Android/data/com.test.luodemo/files/dmtrace.trace
        //Debug.startMethodTracing();

        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss", Locale.getDefault());
        String logDate = dateFormat.format(new Date());
        Debug.startMethodTracing("luoah-" + logDate);

        setContentView(R.layout.activity_debug);
        test1();
        test2();
        Debug.stopMethodTracing();
    }

生成文件

trace 文件分析

在 AS 里打开 Device Explorer ,找到生成路径,双击生成的 dmtrace.trace 文件,

很明显,test2() 方法耗时 500毫秒。

相关推荐
恋猫de小郭11 小时前
Android Studio 正式版 10 周年回顾,承载 Androider 的峥嵘十年
android·ide·android studio
aaaweiaaaaaa14 小时前
php的使用及 phpstorm环境部署
android·web安全·网络安全·php·storm
工程师老罗16 小时前
Android记事本App设计开发项目实战教程2025最新版Android Studio
android
pengyu20 小时前
系统化掌握 Dart 编程之异常处理(二):从防御到艺术的进阶之路
android·flutter·dart
消失的旧时光-194320 小时前
android Camera 的进化
android
基哥的奋斗历程21 小时前
Openfga 授权模型搭建
android·adb
Pakho love1 天前
Linux:文件与fd(被打开的文件)
android·linux·c语言·c++
勿忘初心912 天前
Android车机DIY开发之软件篇(九) NXP AutomotiveOS编译
android·arm开发·经验分享·嵌入式硬件·mcu
lingllllove2 天前
PHP中配置 variables_order详解
android·开发语言·php
消失的旧时光-19432 天前
Android-音频采集
android·音视频