แนวคิดและการใช้งาน Jetpack Compose
การติดตามระบบจะแสดงข้อมูลเกี่ยวกับกระบวนการที่ระดับระบบเท่านั้น ดังนั้นบางครั้งจึงยากที่จะทราบว่าเมธอดใดของแอปหรือเกมที่กำลังทำงานอยู่ ณ เวลาใดเวลาหนึ่งเมื่อเทียบกับเหตุการณ์ของระบบ
Jetpack มี Tracing 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 ปิดอยู่
- เวลาเริ่มต้นของแอป
- การแสดงผลช้า