Menyediakan pengalaman aplikasi yang lancar, stabil, dan hemat baterai memerlukan identifikasi dan penyelesaian hambatan performa umum di seluruh stabilitas, rendering UI, penggunaan memori, pekerjaan latar belakang, latensi startup, dan pengoptimalan build.
Panduan di bagian ini menjelaskan perilaku platform Android yang mendasar untuk setiap jenis masalah dan menjelaskan cara mendiagnosis, membuat profil, dan memperbaikinya menggunakan alat seperti Android Studio Profiler, Perfetto, Logcat, dan ApplicationExitInfo.
Stabilitas
- ANR: Mendiagnosis dan memperbaiki error Aplikasi Tidak Merespons (ANR) yang disebabkan oleh pemblokiran thread UI, I/O thread utama, perebutan kunci, atau penerima siaran yang lambat.
- Error: Baca pelacakan tumpukan, periksa output Logcat, dan cegah pengecualian yang tidak tertangani dan sinyal native.
Rendering dan startup
- Rendering lambat: Identifikasi dan perbaiki frame UI yang menurun atau terhenti (
>16msdan>700ms) yang disebabkan oleh tata letak yang mahal, proses pengikatan, atau jeda thread utama. - Sesi lambat (khusus game):
Ukur kecepatan frame dengan
SurfaceFlingerdan optimalkan kecepatan frame game menggunakan Android Frame Pacing (Swappy), Vulkan, dan Android Dynamic Performance Framework (ADPF). - Waktu startup aplikasi: Pahami konten peluncuran cold, warm, dan hot, ukur Waktu hingga Tampilan Awal (TTID) dan Waktu hingga Tampilan Penuh (TTFD), serta optimalkan tugas startup.
Pengelolaan memori
- Penghentian proses karena memori rendah (LMK): Pahami cara
daemon penghentian proses karena memori rendah (
lmkd) Android memprioritaskan proses melaluioom_adj_scoredan profil footprint memori di Android Studio, Unity, dan Unreal Engine. - Penggunaan memori (RSS Anonim + swap): Ukur dan kurangi jejak memori swap dan Resident Set Size (RSS) anonim aplikasi Anda di seluruh status latar depan, layanan, dan latar belakang.
- Penggunaan memori bitmap: Mendiagnosis alokasi bitmap yang terlalu besar atau bocor dan melepaskan buffer grafis saat komponen UI berpindah ke latar belakang.
Baterai dan pekerjaan latar belakang
- Penguncian layar berlebihan: Hindari
mempertahankan penguncian layar saat aktif parsial dalam jangka waktu yang lama dan migrasikan tugas latar belakang
ke
WorkManageratauJobScheduler. - Penguncian layar saat aktif parsial bermasalah: Pastikan setiap penguncian layar saat aktif parsial yang diperoleh dilepaskan dengan benar di semua jalur eksekusi dan error.
- Bangun berlebihan: Kurangi bangun alarm presisi dan gabungkan atau tunda pekerjaan latar belakang terjadwal.
- Pemindaian Wi-Fi latar belakang yang berlebihan: Minimalkan frekuensi pemindaian Wi-Fi latar belakang dan gunakan API konektivitas dan lokasi pasif atau berkelompok.
- Penggunaan jaringan latar belakang yang berlebihan:
Gabungkan dan tunda transfer jaringan seluler latar belakang menggunakan batasan
WorkManager. - Penggunaan baterai yang berlebihan: Mendiagnosis baterai cepat habis di perangkat seluler dan perangkat Wear OS dengan membuat profil CPU, sensor, dan aktivitas radio.
Izin dan pengoptimalan build
- Penolakan izin: Minta izin runtime dalam konteks dan jelaskan alasan izin dengan jelas kepada pengguna.
- Pengoptimalan kode DEX: Konfigurasi aturan penyingkatan, obfuscation, dan pengoptimalan R8 untuk mengurangi ukuran DEX dan meningkatkan performa runtime.