Menghasilkan Log Rekaman Aktivitas dengan Melengkapi Aplikasi Anda

Untuk menghasilkan 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 dengan menggunakan Profiler CPU Android Studio.

Anda juga dapat memulai dan berhenti merekam aktivitas di Profiler CPU tanpa melengkapi 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 yang Anda inginkan agar sistem memulai pencatatan log rekaman aktivitas.

DI panggilan tersebut, Anda dapat menetapkan nama untuk file .trace, dan sistem akan menyimpannya ke direktori khusus paket yang dimaksudkan untuk data aplikasi persisten pada perangkat target—ini adalah direktori yang sama yang ditunjukkan oleh getExternalFilesDir() dan berada dalam direktori ~/sdcard/ pada kebanyakan perangkat. File ini berisi data rekaman aktivitas metode biner dan tabel pemetaan berisi thread dan nama metode. Untuk menghentikan perekaman aktivitas, panggil stopMethodTracing().

Sampel berikut mulai dan berhenti merekam 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, jika aplikasi Anda memanggil startMethodTracing() kembali tanpa mengubah nama log rekaman aktivitas, maka aplikasi tersebut akan menimpa log yang telah disimpan ke 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. Itu berarti, Anda bisa memanggil startMethodTracing() dalam metode onCreate(Bundle) aktivitas Anda, dan memanggil stopMethodTracing() dalam metode onDestroy() aktivitas tersebut.

Perlu diketahui, aplikasi Anda akan berjalan lebih lambat jika pembuatan profil diaktifkan. Itu berarti, 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 menerapkan 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 pembuatan profil sampel, panggil startMethodTracingSampling() (bukan startMethodTracing()) dengan interval pengambilan sampel yang ditetapkan. Sistem akan mengumpulkan sampel 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 bagi 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(). 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 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 jendela fitur). Seperti dalam gambar 1, Anda dapat menemukan file .trace dengan mengarahkan ke direktori khusus paket aplikasi Anda.

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

  • Salin file ke komputer lokal Anda menggunakan perintah adb pull . Perintah di bawah ini 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.