Mengoptimalkan tampilan kustom

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.