/**
* 在需要开始跟踪的地方调用如下代码,将生成的文件保存在指定目录中
* @param context 使用指定的上下文生成跟踪文件目录和名称
*/
fun startTrack(context: Context) {
val name = context.javaClass.simpleName
val path: String = context.filesDir.path + "/track-${System.currentTimeMillis()}-$name.trace"
"path====> $path".logD()
Debug.startMethodTracing(path)
}
/**
* 结束跟踪
*/
fun stopTrack() {
Debug.stopMethodTracing()
}
/** 点击界面上的一个按钮,开始追踪 */
viewBinding.button.setOnClickListener {
startTrack(this)
viewModel.sleepOnMainThread()
stopTrack()
}
/** 在主线程睡眠2秒,模拟耗时操作 */
fun sleepOnMainThread() {
kotlin.runCatching {
Thread.sleep(2000)
}
}
// 例如我在示例中生成的文件路径
/data/data/com.william.easykt/files/track-1661176701787-ProfilerActivity.trace
导出操作如下图:
fun sleepOnWorkThread() {
thread {
kotlin.runCatching {
Thread.sleep(2000)
}
}
}