Diposting oleh Ben Trengrove, Android Developer Relations Engineer
Hari ini, sebagai bagian dari Bill of Materials Compose Agustus '23, kami merilis Jetpack Compose versi 1.5, toolkit UI native modern Android yang digunakan oleh aplikasi seperti Play Store, Dropbox, dan Airbnb. Rilis ini sangat berfokus pada peningkatan performa, karena bagian utama dari refaktor pengubah yang kami mulai pada rilis Oktober '22 sekarang telah digabungkan.
Performa
Ketika kami pertama kali merilis Compose 1.0 pada 2021, kami berfokus untuk mendapatkan platform API yang tepat untuk memberikan fondasi yang kuat saat membangun. Kami menginginkan API yang kuat dan ekspresif serta mudah digunakan dan stabil sehingga developer dapat menggunakannya dengan percaya diri dalam produksi. Sejalan dengan upaya kami untuk terus meningkatkan API, performa merupakan prioritas utama kami, dan pada rilis Agustus '23, kami memberikan banyak peningkatan performa.
Performa pengubah
Pengubah melihat peningkatan besar dalam performa, hingga 80% pada waktu komposisi, dalam rilis ini. Bagian terbaiknya adalah, berkat kerja keras kami untuk menghadirkan platform API yang tepat pada rilis pertama, mayoritas aplikasi akan mendapatkan manfaat ini hanya dengan melakukan upgrade ke rilis Agustus '23.
Kami memiliki serangkaian tolok ukur yang digunakan untuk memantau regresi dan menginformasikan investasi kami dalam meningkatkan performa. Setelah rilis awal Compose 1.0, kami mulai berfokus pada hal-hal yang dapat kami tingkatkan. Tolok ukur menunjukkan bahwa kami menghabiskan lebih banyak waktu daripada yang diperkirakan untuk merealisasikan pengubah. Pengubah membentuk sebagian besar pohon komposisi, dan karenanya, merupakan kontributor terbesar untuk waktu komposisi awal di Compose. Pemfaktoran ulang pengubah ke desain yang lebih efisien dimulai secara mendasar sejak rilis Oktober '22.
Rilis Oktober '22 menyertakan API baru dan peningkatan performa di modul level terendah kami, Compose UI. Pengubah dibangun di atas satu sama lain, jadi kami mulai memigrasikan pengubah level rendah kami di Compose Foundation pada rilis berikutnya, Maret '23. Ini mencakup graphicsLayer, pengubah fokus level rendah, padding, dan offset. Pengubah level rendah ini digunakan oleh pengubah lain yang sangat sering digunakan seperti Clickable, dan juga digunakan oleh banyak framework Composable seperti Text. Memigrasikan pengubah pada rilis Maret '23 menghadirkan peningkatan performa pada komponen-komponen tersebut, tetapi keuntungan yang sesungguhnya akan terlihat ketika kami bisa memigrasikan pengubah level yang lebih tinggi dan composable itu sendiri ke sistem pengubah yang baru.
Pada rilis Agustus '23, kami mulai memigrasikan pengubah Clickable ke sistem pengubah baru, yang secara substansial meningkatkan waktu komposisi, pada beberapa kasus hingga 80%. Hal ini sangat relevan khususnya dalam lazy list yang berisi elemen yang dapat diklik, seperti tombol. Modifier.indication yang digunakan oleh Clickable, masih dalam proses migrasi, jadi kami mengharapkan lebih banyak peningkatan lagi di rilis mendatang.
Sebagai bagian dari upaya ini, kami mengidentifikasi kasus penggunaan untuk pengubah terkomposisi yang tidak tercakup dalam refaktor asli dan menambahkan API baru untuk membuat elemen Modifier.Node yang menggunakan instance CompositionLocal.
Kami sekarang sedang mengerjakan dokumentasi untuk memandu Anda dalam memigrasikan pengubah Anda sendiri ke API Modifier.Node yang baru. Untuk segera memulai, Anda bisa merujuk pada contoh di repositori kami.
Pelajari lebih lanjut tentang alasan di balik perubahan tersebut dalam pembahasan mendalam Pengubah Compose dari Android Dev Summit '22.
Memori
Rilis ini menyertakan sejumlah peningkatan dalam penggunaan memori. Kami telah mencermati alokasi yang terjadi di berbagai API Compose dan telah mengurangi total alokasi di sejumlah area, terutama di stack grafik dan pemuatan sumber daya vektor. Ini tidak hanya mengurangi jejak memori Compose, tetapi juga secara langsung meningkatkan performa, karena kita memangkas waktu untuk mengalokasikan memori dan mengurangi pembersihan sampah memori.
Selain itu, kami memperbaiki kebocoran memori saat menggunakan ComposeView, yang akan bermanfaat bagi semua aplikasi, terutama bagi aplikasi yang menggunakan arsitektur multi-aktivitas atau interop View/Compose dalam jumlah besar.
Teks
BasicText telah beralih ke sistem rendering baru yang didukung oleh pekerjaan pengubah, yang menghasilkan rata-rata peningkatan sebesar 22% pada waktu komposisi awal dan peningkatan hingga 70% dalam satu tolok ukur tata letak kompleks yang melibatkan teks.
Beberapa API Text juga telah distabilkan, termasuk:
Peningkatan dan perbaikan fitur inti
Kami juga telah meluncurkan fitur baru dan peningkatan pada API inti serta menstabilkan beberapa API:
- LazyStaggeredGrid kini stabil.
- Penambahan asComposePaint API untuk menggantikan toComposePaint saat objek yang ditampilkan membungkus android.graphics.Paint asli.
- Penambahan IntermediateMeasurePolicy untuk mendukung pengawasan di SubcomposeLayout.
- Penambahan pengubah onInterceptKeyBeforeSoftKeyboard untuk mencegat peristiwa tombol sebelum dikirim ke keyboard virtual.
Mulai!
Kami berterima kasih atas semua laporan bug dan permintaan fitur yang dikirimkan ke issue tracker — semua itu membantu kami memperbaiki Compose dan membangun API yang Anda butuhkan. Terus berikan masukan Anda dan bantu kami menjadikan Compose lebih baik!
Ingin tahu rencana kami berikutnya? Lihat roadmap kami untuk melihat fitur-fitur yang sedang kami pikirkan dan kerjakan. Kami tidak sabar ingin segera melihat kreasi Anda yang berikutnya.
Selamat menggunakan Compose!