Концепции и реализация Jetpack Compose
Трассировка системы отображает информацию о процессах только на системном уровне, поэтому иногда сложно определить, какие из методов вашего приложения или игры выполняются в данный момент времени относительно системных событий.
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]) } } }
Java
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 в нативном коде см. в разделе «Пользовательские события трассировки в нативном коде» .
{% verbatim %}Рекомендуем вам
- Примечание: текст ссылки отображается, когда JavaScript отключен.
- время запуска приложения
- Медленная отрисовка