Определите пользовательские события

Трассировка системы показывает информацию о процессах только на системном уровне, поэтому иногда сложно узнать, какой из методов вашего приложения или игры выполняется в данный момент времени относительно системных событий.

Jetpack предоставляет API трассировки, который можно использовать для маркировки определенного раздела кода. Эта информация затем отображается в трассировках, записанных на устройстве. Macrobenchmark автоматически записывает трассировки с помощью пользовательских точек трассировки.

При использовании инструмента командной строки systrace для сбора трассировок требуется опция -a . Без этого параметра методы вашего приложения не отображаются в отчете о трассировке системы.

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, поскольку она автоматически завершает трассировку после завершения лямбда-выражения. Это исключает риск забыть завершить трассировку.

Вы также можете использовать API NDK для пользовательских событий трассировки. Дополнительные сведения об использовании этого API для собственного кода см. в разделе Пользовательские события трассировки в машинном коде .

{% дословно %}

Пока рекомендаций нет.

Попытайтесь в свой аккаунт Google.

{% дословно %}