Основные понятия и реализация Jetpack Compose
Трассировка системы показывает информацию о процессах только на системном уровне, поэтому иногда трудно понять, какие методы приложения или игры выполняются в определенное время относительно системных событий.
Jetpack предоставляет API трассировки, который можно использовать для маркировки определенного раздела кода. Эта информация затем включается в трассировки, полученные на устройстве. Macrobenchmark автоматически записывает трассировки с настраиваемыми точками трассировки.
При использовании инструмента командной строки systrace для записи трассировок требуется параметр -a. Если не включить этот параметр, методы приложения не будут отображаться в отчете о трассировке системы.
Kotlin
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, поскольку она автоматически завершает трассировку после выполнения лямбда-выражения. Это устраняет риск забыть закончить трассировку.
Для специальных событий трассировки также можно использовать NDK API. Подробнее о том, как использовать этот API для нативного кода…
Рекомендуем
- Примечание. Текст ссылки показывается, когда JavaScript отключен.
- Время запуска приложения
- Медленная отрисовка