Jika Anda memiliki tampilan yang dirancang dengan baik, yang merespons gestur dan transisi antarstatus, pastikan tampilan berjalan cepat. Untuk menghindari UI yang terasa lambat atau tersendat selama pemutaran, pastikan animasi berjalan secara konsisten pada 60 frame per detik.
Mempercepat tampilan
Untuk mempercepat tampilan, hilangkan kode yang tidak perlu dari rutinitas yang sering dipanggil. Mulai
dengan
onDraw()
,
yang akan memberi Anda manfaat terbesar. Secara khusus, hilangkan alokasi di onDraw()
,
karena alokasi dapat menyebabkan pembersihan sampah memori yang menyebabkan operasi tersendat. Mengalokasikan objek selama inisialisasi atau di antara animasi. Jangan pernah membuat alokasi saat animasi
berjalan.
Selain menjadikan onDraw()
lebih ringkas, pastikan untuk dipanggil sejarang mungkin. Sebagian besar panggilan ke onDraw()
adalah hasil dari panggilan ke
invalidate()
, jadi hilangkan
panggilan yang tidak perlu ke invalidate()
.
Operasi lain yang menguras resource adalah menjelajahi tata letak. Saat tampilan memanggil
requestLayout()
, sistem UI Android akan menjelajahi seluruh hierarki tampilan untuk menemukan seberapa besar seharusnya setiap tampilan. Jika
menemukan pengukuran yang bertentangan, sistem mungkin akan melewati hierarki beberapa kali. Desainer UI
terkadang membuat hierarki mendalam yang terdiri dari objek
ViewGroup
bertingkat. Hierarki tampilan yang dalam
ini menyebabkan masalah performa, jadi buat hierarki tampilan Anda dangkal mungkin.
Jika Anda memiliki UI yang kompleks, sebaiknya tulis ViewGroup
kustom untuk menjalankan tata letaknya.
Tidak seperti tampilan bawaan, tampilan kustom dapat membuat asumsi khusus aplikasi tentang ukuran
dan bentuk turunannya, sehingga tidak perlu melewati turunannya untuk menghitung pengukuran.
Misalnya, jika Anda memiliki ViwGroup
kustom yang tidak menyesuaikan ukurannya agar sesuai dengan
semua tampilan turunannya, Anda menghindari overhead pengukuran semua tampilan turunan. Pengoptimalan ini
tidak memungkinkan jika Anda menggunakan tata letak bawaan yang melayani berbagai kasus penggunaan.