Membuat Log Rekaman Aktivitas dengan Menginstrumentasikan Aplikasi

Untuk membuat rekaman aktivitas metode eksekusi aplikasi, Anda dapat menginstrumentasikan aplikasi menggunakan class Debug. Menginstrumentasikan aplikasi dengan cara ini akan memberi Anda kontrol yang lebih besar tepat saat perangkat mulai dan berhenti merekam informasi rekaman aktivitas. Perangkat juga menyimpan log rekaman aktivitas menggunakan nama yang Anda tetapkan, sehingga nantinya Anda dapat dengan mudah mengidentifikasi setiap log. Selanjutnya, Anda dapat melihat setiap log rekaman aktivitas menggunakan CPU Profiler Android Studio.

Anda juga dapat mulai dan berhenti merekam aktivitas di CPU Profiler tanpa menginstrumentasikan kode aplikasi.

Sebelum mulai membuat log rekaman aktivitas, pastikan aplikasi telah menambahkan logika untuk menyimpan log rekaman aktivitas ke direktori khusus aplikasi.

Menginstrumentasikan aplikasi Anda

Untuk membuat log rekaman aktivitas, panggil startMethodTracing() tempat Anda ingin sistem memulai pencatatan log rekaman aktivitas.

Di panggilan tersebut, Anda dapat menentukan nama untuk file .trace, dan sistem akan menyimpannya ke direktori khusus paket yang ditujukan untuk data aplikasi persisten di perangkat target. Ini adalah direktori yang sama yang ditunjukkan oleh getExternalFilesDir() dan berada dalam direktori ~/sdcard/ di sebagian besar perangkat. File ini berisi data rekaman aktivitas metode biner serta tabel pemetaan berisi thread dan nama metode. Untuk menghentikan perekaman aktivitas, panggil stopMethodTracing().

Contoh berikut memulai dan menghentikan perekaman log rekaman aktivitas dengan nama sample.trace:

Kotlin

// Starts recording a trace log with the name you provide. For example, the
// following code tells the system to start recording a .trace file to the
// device with the name "sample.trace".
Debug.startMethodTracing("sample")

// The system begins buffering the generated trace data, until your
// application calls <code><a href="/reference/android/os/Debug.html#stopMethodTracing()">stopMethodTracing()</a></code>, at which time it writes
// the buffered data to the output file.
Debug.stopMethodTracing()

Java

// Starts recording a trace log with the name you provide. For example, the
// following code tells the system to start recording a .trace file to the
// device with the name "sample.trace".
Debug.startMethodTracing("sample");
...
// The system begins buffering the generated trace data, until your
// application calls <code><a href="/reference/android/os/Debug.html#stopMethodTracing()">stopMethodTracing()</a></code>, at which time it writes
// the buffered data to the output file.
Debug.stopMethodTracing();

Perlu diperhatikan bahwa jika aplikasi Anda memanggil startMethodTracing() kembali tanpa mengubah nama log rekaman aktivitas, aplikasi tersebut akan menimpa log yang telah disimpan di perangkat. Untuk mempelajari cara mengubah nama setiap log rekaman aktivitas secara dinamis, buka bagian tentang menyimpan beberapa log.

Jika sistem mencapai ukuran buffer maksimum sebelum Anda memanggil stopMethodTracing(), sistem akan menghentikan perekaman aktivitas dan mengirimkan notifikasi ke konsol. Metode yang memulai dan menghentikan perekaman aktivitas bekerja di seluruh proses aplikasi Anda. Artinya, Anda dapat memanggil startMethodTracing() dalam metode onCreate(Bundle) aktivitas Anda, dan memanggil stopMethodTracing() dalam metode onDestroy() aktivitas tersebut.

Perlu diketahui bahwa aplikasi Anda akan berjalan lebih lambat jika pembuatan profil diaktifkan. Artinya, Anda tidak boleh menggunakan data pembuatan profil untuk menentukan pengaturan waktu absolut (seperti, "foo() metode memerlukan waktu 2,5 detik untuk berjalan"). Informasi pengaturan waktu dalam log rekaman aktivitas hanya berguna saat membandingkannya dengan log rekaman aktivitas sebelumnya, sehingga Anda dapat melihat apakah perubahan terbaru mempercepat atau memperlambat aplikasi Anda.

Saat melakukan deployment ke perangkat yang menjalankan Android 5.0 (API level 21) dan yang lebih baru, Anda dapat menggunakan pembuatan profil berbasis sampel untuk membuat profil dengan dampak lebih kecil pada performa waktu proses. Untuk mengaktifkan pembuatan profil berbasis sampel, panggil startMethodTracingSampling() (bukan startMethodTracing()) dengan interval pengambilan sampel yang ditetapkan. Sistem akan mengumpulkan sampel secara berkala hingga aplikasi memanggil stopMethodTracing().

Menyimpan beberapa log

Jika aplikasi Anda memulai dan menghentikan rekaman aktivitas metode berkali-kali tanpa menetapkan nama baru untuk log rekaman aktivitas, perangkat akan menimpa log rekaman aktivitas yang lebih lama dengan yang baru. Artinya, aplikasi hanya menyimpan log rekaman aktivitas terbaru. Untuk menyimpan beberapa log rekaman aktivitas ke perangkat, ganti nama log rekaman aktivitas secara dinamis setiap kali aplikasi memanggil startMethodTracing(). Sampel di bawah ini menggunakan class SimpleDateFormat untuk menyertakan tanggal dan waktu saat ini ketika memberi nama setiap log rekaman aktivitas:

Kotlin

// Uses the <code><a href="/reference/java/text/SimpleDateFormat.html">SimpleDateFormat</a></code> class to create a String with
// the current date and time.
val dateFormat: DateFormat = SimpleDateFormat("dd_MM_yyyy_hh_mm_ss", Locale.getDefault())
val logDate: String = dateFormat.format(Date())
// Applies the date and time to the name of the trace log.
Debug.startMethodTracing("sample-$logDate")

Java

// Uses the <code><a href="/reference/java/text/SimpleDateFormat.html">SimpleDateFormat</a></code> class to create a String with
// the current date and time.
SimpleDateFormat dateFormat =
        new SimpleDateFormat("dd_MM_yyyy_hh_mm_ss", Locale.getDefault());
String logDate = dateFormat.format(new Date());
// Applies the date and time to the name of the trace log.
Debug.startMethodTracing(
        "sample-" + logDate);

Mengakses log rekaman aktivitas di perangkat

Setelah sistem membuat log rekaman aktivitas pada perangkat, Anda dapat mengakses file tersebut dengan salah satu cara berikut:

  • Menggunakan Device File Explorer. Untuk membuka Device File Explorer, klik View > Tool Windows > Device File Explorer (atau klik tombol Device File Explorer dalam kolom jendela alat). Seperti yang ditampilkan dalam gambar 1, Anda dapat menemukan file .trace dengan membuka direktori khusus paket pada aplikasi.

    Gambar 1. Menemukan log rekaman aktivitas menggunakan Device File Explorer.

  • Salin file tersebut ke komputer lokal Anda menggunakan perintah adb pull. Perintah di bawah ini menyalin log rekaman aktivitas sample.trace dari perangkat ke direktori ~/Documents/trace-logs/ pada komputer lokal Anda.

    adb pull path-on-device/sample.trace ~/Documents/trace-logs/

Selanjutnya, Anda dapat mengimpor file rekaman aktivitas dengan CPU Profiler.