Fase dan performa Compose

Saat memperbarui frame, Compose melalui tiga fase:

  • Komposisi: Compose menentukan apa yang akan ditampilkan. Fungsi ini menjalankan fungsi composable dan mem-build hierarki UI.
  • Tata letak: Compose menentukan ukuran dan penempatan setiap elemen di hierarki UI.
  • Gambar: Compose benar-benar merender elemen UI individual.

Compose dapat dengan cermat melewati salah satu fase tersebut jika tidak diperlukan. Misalnya, satu elemen grafis beralih antara dua ikon dengan ukuran yang sama. Karena elemen ini tidak berubah ukuran, dan tidak ada elemen hierarki UI yang ditambahkan atau dihapus, Compose dapat melewati fase komposisi dan tata letak dan menggambar ulang satu elemen ini.

Namun, kesalahan coding dapat mempersulit Compose mengetahui fase mana yang dapat dilewati dengan aman. Dalam hal ini, Compose menjalankan ketiga fase, yang dapat memperlambat UI Anda. Jadi, banyak praktik terbaik performa adalah untuk membantu Compose melewati fase yang tidak perlu dilakukan.

Untuk mengetahui informasi selengkapnya, lihat panduan Fase Jetpack Compose.

Prinsip umum

Ada beberapa prinsip umum yang dapat diikuti untuk meningkatkan performa secara umum:

  • Jika memungkinkan, pindahkan penghitungan dari fungsi composable. Fungsi composable mungkin perlu dijalankan kembali setiap kali UI berubah. Kode apa pun yang Anda masukkan ke dalam composable akan dijalankan kembali, kemungkinan untuk setiap frame animasi. Batasi kode composable menjadi hanya yang dibutuhkan untuk mem-build UI.
  • Menunda status baca selama mungkin. Dengan memindahkan pembacaan status ke composable turunan atau fase berikutnya, Anda dapat meminimalkan rekomposisi atau melewati fase komposisi sepenuhnya. Anda dapat melakukannya dengan meneruskan fungsi lambda, bukan nilai status untuk status yang sering berubah, dan dengan lebih memilih pengubah berbasis lambda saat Anda meneruskan status yang sering berubah. Anda dapat melihat contoh teknik ini di bagian Menunda pembacaan selama mungkin di bagian Mengikuti praktik terbaik.

Referensi lainnya