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毫秒。

相关推荐
fanged3 小时前
天马G前端的使用
android·游戏
molong9317 小时前
Kotlin 内联函数、高阶函数、扩展函数
android·开发语言·kotlin
叶辞树8 小时前
Android framework调试和AMS等服务调试
android
慕伏白10 小时前
【慕伏白】Android Studio 无线调试配置
android·ide·android studio
低调小一10 小时前
Kuikly 小白拆解系列 · 第1篇|两棵树直调(Kotlin 构建与原生承载)
android·开发语言·kotlin
跟着珅聪学java11 小时前
spring boot 整合 activiti 教程
android·java·spring
川石课堂软件测试12 小时前
全链路Controller压测负载均衡
android·运维·开发语言·python·mysql·adb·负载均衡
2501_9159214313 小时前
iOS 26 电耗监测与优化,耗电问题实战 + 多工具 辅助策略
android·macos·ios·小程序·uni-app·cocoa·iphone
2501_9159214313 小时前
苹果软件混淆与 iOS 应用加固白皮书,IPA 文件加密、反编译防护与无源码混淆方案全解析
android·ios·小程序·https·uni-app·iphone·webview
倔强的石头10614 小时前
【Linux指南】Linux命令行进度条实现原理解析
android·linux