Tracing:性能埋点 · AndroidX 源码指南
AAndroidX 源码指南
测试与性能
测试与性能 · androidx.test

Tracing:性能埋点

Trace.beginSection/endSection 埋点,配合 systrace 与 Perfetto 分析性能。

最后更新 2026-08-01

复制即用

import androidx.tracing.trace

fun loadList() {
    trace("LoadList") {
        // 需要分析的代码
        fetchData()
        render()
    }
}

或者手动 begin/end:

import androidx.tracing.Trace

Trace.beginSection("ParseResponse")
try {
    parse()
} finally {
    Trace.endSection()
}

埋点规范

做法说明
trace("Name") { ... }代码块埋点,自动配对
Trace.beginSection/endSection手动配对,用 try/finally
Trace.beginAsyncSection/endAsyncSection跨线程/跨函数异步埋点(配唯一 id)
systrace -a 包名按包名过滤抓取
Perfetto现代分析工具,可看长时段

常见陷阱

  • begin 了不 end:section 嵌套错乱,抓取结果不可读。
  • 每帧埋点:高频循环里别每帧调用。
  • 生产常驻埋点:用条件编译(BuildConfig.DEBUG)控制。
  • 异步埋点用错 API:跨线程场景用 async 版本,普通 begin/end 不匹配。

要点

  • trace("名称") { ... } 在代码块执行期间记录一个 trace section。
  • 数据可通过 systracepython systrace.py -a 你的包名)或 Perfetto 抓取分析。
  • 必须成对使用 beginSection/endSection,用 try/finally 保证配对。
  • 埋点本身开销极小,但不要在高频循环里每帧调用。
  • 生产环境建议用条件编译控制是否埋点。

相关页面