Konzepte und Jetpack Compose-Implementierung
Bei der Systemtrace werden Informationen zu Prozessen nur auf Systemebene angezeigt. Daher ist es manchmal schwierig zu wissen, welche Methoden Ihrer App oder Ihres Spiels zu einem bestimmten Zeitpunkt im Verhältnis zu Systemereignissen ausgeführt werden.
Jetpack bietet eine Tracing API, mit der Sie einen bestimmten Codeabschnitt kennzeichnen können. Diese Informationen werden dann in Traces gemeldet, die auf dem Gerät erfasst wurden. Macrobenchmark Mit Macrobenchmark werden Traces mit benutzerdefinierten Tracepunkten automatisch erfasst.
Wenn Sie das Befehlszeilentool „systrace“ zum Erfassen von Traces verwenden, ist die Option -a erforderlich. Ohne diese Option werden die Methoden Ihrer App nicht in einem Systemtrace-Bericht angezeigt.
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); } ); } ); } }
Wir empfehlen, die Kotlin-Erweiterungsfunktion auch in Java-Code zu verwenden, da sie den Trace automatisch beendet, wenn die Lambda-Funktion abgeschlossen ist. So wird verhindert, dass Sie das Beenden des Tracings vergessen.
Sie können auch eine NDK API für benutzerdefinierte Trace-Ereignisse verwenden. Informationen zur Verwendung dieser API für Ihren nativen Code finden Sie unter Benutzerdefinierte Trace-Ereignisse in nativem Code.
Empfehlungen für Sie
- Hinweis: Linktext wird angezeigt, wenn JavaScript deaktiviert ist
- App-Startzeit
- Langsames Rendering