Praktik terbaik berikut membantu mengoptimalkan aplikasi Anda tanpa mengorbankan kualitas.
Menggunakan Profil Dasar Pengukuran
Profil Dasar Pengukuran dapat meningkatkan kecepatan eksekusi kode sebesar 30% sejak peluncuran pertama, dan dapat membuat semua interaksi pengguna—seperti memulai aplikasi, berpindah-pindah layar, atau men-scroll konten—lebih lancar sejak pertama kali dijalankan. Peningkatan kecepatan dan responsivitas aplikasi akan meningkatkan jumlah pengguna aktif harian dan rata-rata rasio kunjungan kembali yang lebih tinggi.
Menggunakan profil startup
Profil startup mirip dengan Profil Dasar Pengukuran, tetapi dijalankan pada waktu kompilasi untuk mengoptimalkan tata letak DEX agar startup aplikasi lebih cepat.
Menggunakan library App Startup
Dengan library App Startup, Anda dapat menentukan penginisialisasi komponen yang menggunakan satu penyedia konten yang sama, bukan menentukan penyedia konten terpisah untuk setiap komponen yang perlu diinisialisasi. Hal ini dapat memperbaiki waktu startup aplikasi secara signifikan.
Memuat library dengan lambat atau menonaktifkan inisialisasi otomatis
Aplikasi menggunakan banyak library, beberapa di antaranya mungkin bersifat wajib untuk startup. Namun, mungkin ada banyak library dengan inisialisasi yang dapat ditunda hingga frame pertama digambar. Beberapa library memiliki opsi untuk menonaktifkan inisialisasi otomatis pada saat startup atau memiliki inisialisasi on-demand. Gunakan opsi ini untuk menunda inisialisasi hingga diperlukan untuk membantu meningkatkan performa. Misalnya, Anda dapat menggunakan inisialisasi on-demand untuk hanya memanggil WorkManager saat komponen diperlukan.
Menggunakan ViewStubs
ViewStub
adalah View
tidak terlihat dan berukuran nol
yang dapat Anda gunakan untuk meng-inflate resource tata letak secara lambat saat runtime. Hal ini
memungkinkan Anda menunda inflate tampilan yang tidak diperlukan saat startup hingga lain
waktu.
Jika menggunakan Jetpack Compose, Anda bisa mendapatkan perilaku yang serupa dengan ViewStub
menggunakan status untuk menunda pemuatan beberapa komponen:
var shouldLoad by remember {mutableStateOf(false)}
if (shouldLoad) {
MyComposable()
}
Muat composable di dalam blok kondisional dengan mengubah shouldLoad
:
LaunchedEffect(Unit) {
shouldLoad = true
}
Tindakan ini akan memicu rekomposisi yang menyertakan kode di dalam blok kondisional dalam cuplikan pertama.
Mengoptimalkan layar pembuka Anda
Layar pembuka adalah bagian utama dari startup aplikasi, dan penggunaan layar pembuka yang didesain dengan baik dapat membantu meningkatkan pengalaman startup aplikasi secara keseluruhan. Android 12 (level API 31) dan yang lebih baru menyertakan layar pembuka yang didesain untuk meningkatkan performa. Untuk informasi selengkapnya, lihat Layar pembuka.
Menggunakan jenis gambar yang skalabel
Sebaiknya gunakan vektor drawable untuk gambar. Jika tidak memungkinkan, gunakan gambar WebP. WebP adalah format gambar yang memberikan kompresi lossless dan lossy yang sangat bagus untuk gambar di web. Anda dapat mengonversi gambar BMP, JPG, PNG, atau GIF statis yang ada ke format WebP menggunakan Android Studio. Untuk mengetahui informasi selengkapnya, lihat Membuat gambar WebP.
Selain itu, minimalkan jumlah dan ukuran gambar yang dimuat selama startup.
Menggunakan Performance API
Performance API untuk pemutaran media tersedia di Android 12 (level API 31) dan yang lebih baru. Anda dapat menggunakan API ini untuk memahami kemampuan perangkat dan menjalankan operasi dengan semestinya.
Memprioritaskan rekaman aktivitas cold startup
Cold start mengacu pada aplikasi yang dimulai dari awal. Artinya, proses sistem belum membuat proses aplikasi. Aplikasi Anda biasanya melakukan cold start jika Anda meluncurkannya untuk pertama kali sejak perangkat di-booting atau sejak sistem menghentikan aplikasi secara paksa. Cold start jauh lebih lambat karena aplikasi dan sistem harus melakukan lebih banyak tugas yang tidak diperlukan pada jenis startup lainnya, seperti warm start dan hot start. Cold startup pelacakan sistem memberikan analisis yang lebih mendetail terkait performa aplikasi.
Direkomendasikan untuk Anda
- Catatan: teks link ditampilkan saat JavaScript nonaktif
- Analisis dan pengoptimalan startup aplikasi {:#app-startup-analysis-optimization}
- Waktu startup aplikasi
- Periode frozen