Google berkomitmen untuk mendorong terwujudnya keadilan rasial bagi komunitas Kulit Hitam. Lihat caranya.

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 lebih besar secara persis terhadap kapan perangkat mulai dan berhenti merekam informasi rekaman aktivitas. Perangkat juga menyimpan log rekaman aktivitas menggunakan nama yang Anda tetapkan, sehingga nanti Anda dapat dengan mudah mengidentifikasi setiap log. Selanjutnya, Anda dapat melihat setiap log rekaman aktivitas menggunakan CPU Profiler Android Studio.

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

Sebelum mulai menghasilkan log rekaman aktivitas, pastikan aplikasi Anda memiliki izin untuk menulis ke penyimpanan eksternal (WRITE_EXTERNAL_STORAGE) agar dapat menyimpan log rekaman aktivitas ke perangkat.

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 targe. 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 dan 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();

    

Perhatikan 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-metode yang memulai dan menghentikan perekaman aktivitas bekerja di seluruh proses bagian 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 ketika 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 tinggi, Anda dapat menggunakan pembuatan profil berbasis sampel untuk membuat profil dengan dampak lebih kecil pada performa waktu proses. Untuk mengaktifkan profiling berbasis contoh, panggil startMethodTracingSampling() (bukan lagi memanggil startMethodTracing()) dengan interval sampling yang ditetapkan. Sistem akan mengumpulkan contoh secara berkala hingga aplikasi Anda 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. Itu 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 Anda memanggil startMethodTracing(). Contoh di bawah 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 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 panel tool window). Seperti dalam gambar 1, Anda dapat menemukan file .trace dengan membuka direktori khusus paket aplikasi Anda.

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

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

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

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