定義自訂事件

系統追蹤只會顯示系統層級程序的相關資訊,因此有時很難知道在系統事件相關的特定時間,執行的是哪個應用程式或遊戲的方法。

Jetpack 提供追蹤 API,可用來為特定程式碼區段加上標籤。這項資訊會記錄在從裝置擷取的追蹤記錄中,而 Macrobenchmark 會自動使用自訂追蹤點擷取追蹤記錄。

使用 Systrace 指令列工具擷取追蹤記錄時,需要使用 -a 選項;沒有這個選項,應用程式的方法就不會顯示在系統追蹤記錄報表中。

KotlinJava
class MyAdapter : RecyclerView.Adapter<MyViewHolder>() {
   
override fun onCreateViewHolder(parent: ViewGroup,
            viewType
: Int): MyViewHolder {
        trace
("MyAdapter.onCreateViewHolder") {
           
MyViewHolder.newInstance(parent)
       
}
   
}

   
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
        trace
("MyAdapter.onBindViewHolder") {
            trace
("MyAdapter.queryDatabase")
               
val rowItem = queryDatabase(position)
                dataset
.add(rowItem)
           
}
            holder
.bind(dataset[position])
       
}
   
}
}
public class MyAdapter extends RecyclerView.Adapter<MyViewHolder> {
   
@NonNull
   
@Override
   
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
       
return TraceKt.trace(
           
"MyAdapter.onCreateViewHolder",
           
() -> MyViewHolder.newInstance(parent)
       
);
   
}

   
@Override
   
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
       
TraceKt.trace(
           
"MyAdapter.onBindViewHolder",
           
() -> {
               
TraceKt.trace(
                   
"MyAdapter.queryDatabase",
                   
() -> {
                       
Item rowItem = queryDatabase(position);
                        dataset
.add(rowItem);
                   
}
               
);
           
}
       
);
   
}
}

建議您使用 Kotlin 擴充功能函式 (即使是在 Java 程式碼中),因為此函式會在 lambda 執行完成時自動結束追蹤記錄。此做法可以排除忘記結束追蹤記錄的風險。

您也可以將 NDK API 用於自訂追蹤記錄事件。如要瞭解如何在原生程式碼中使用這個 API,請參閱「原生程式碼中的自訂追蹤記錄事件」。

目前沒有任何建議。

建議 Google 帳戶。