מושגים ויישום ב-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, כי היא מסיימת את המעקב באופן אוטומטי כשה-lambda מסתיים. כך לא מסתכנים בשכחת סיום המעקב.
אפשר גם להשתמש ב-NDK API לאירועי מעקב מותאמים אישית. מידע נוסף על השימוש ב-API הזה בקוד Native זמין במאמר אירועי מעקב מותאמים אישית בקוד Native.
מומלץ בשבילך
- הערה: טקסט הקישור מוצג כש-JavaScript מושבת
- זמן ההפעלה של האפליקציה
- רינדור איטי