Diposting oleh Ben Trengrove, Android Developer Relations Engineer
Hari ini, sebagai bagian dari Bill of Materials Compose Januari ‘24, kami merilis Jetpack Compose versi 1.6, toolkit UI native modern Android yang digunakan oleh banyak aplikasi, seperti Threads, Reddit, dan Dropbox. Rilis ini sebagian besar berfokus pada peningkatan performa, karena kami terus melakukan migrasi pengubah dan meningkatkan efisiensi beberapa komponen utama API kami.
Untuk menggunakan rilis hari ini, upgrade versi Compose BOM Anda ke 2024.01.00
implementation platform('androidx.compose:compose-bom:2024.01.00')
|
Performa
Performa terus menjadi prioritas utama kami, dan rilis Compose ini memiliki peningkatan performa yang besar secara menyeluruh. Kami melihat peningkatan ekstra ~20% dalam performa scroll dan ~12% peningkatan waktu startup dalam tolok ukur kami, dan ini belum termasuk peningkatan dari rilis Agustus '23. Seperti halnya rilis tersebut, sebagian besar aplikasi akan mendapatkan manfaat ini hanya dengan melakukan upgrade ke versi terbaru, tanpa perlu melakukan perubahan kode.
Peningkatan performa scroll dan waktu startup berasal dari fokus kami yang berkelanjutan pada alokasi memori dan inisialisasi lazy, untuk memastikan framework hanya melakukan pekerjaan yang harus dilakukan. Peningkatan ini bisa dilihat pada semua API di Compose, terutama pada API teks, yang bisa diklik, Lazy list, dan grafik, termasuk vektor, dan sebagian berkat pekerjaan pemfaktoran ulang Modifier.Node yang sudah berlangsung selama beberapa rilis.
Ada juga panduan baru bagi Anda untuk membuat pengubah khusus Anda sendiri dengan Modifier.Node.
Mengonfigurasi stabilitas class eksternal
Compose compiler 1.5.5 memperkenalkan opsi compiler baru untuk menyediakan file konfigurasi bagi apa yang dianggap stabil oleh aplikasi Anda. Opsi ini memungkinkan Anda menandai class apa pun sebagai stabil, termasuk modul Anda sendiri, class library eksternal, dan class library standar, tanpa harus mengubah modul-modul ini atau membungkusnya dengan class wrapper stabil. Perhatikan bahwa kontrak stabilitas standar tetap berlaku; ini hanyalah metode mudah untuk memberi tahu Compose compiler tentang apa yang harus dianggap stabil oleh aplikasi Anda. Untuk informasi lebih lanjut tentang cara menggunakan konfigurasi stabilitas, lihat dokumentasi kami.
Performa kode yang dihasilkan
Kode yang dihasilkan oleh plugin Compose compiler juga telah ditingkatkan. Sedikit penyesuaian pada kode ini dapat menghasilkan peningkatan performa yang besar karena kode ini dibuat dalam setiap fungsi composable. Compose compiler melacak objek status Compose untuk mengetahui composable mana yang harus dikomposisi ulang ketika ada perubahan nilai; tetapi, banyak nilai status hanya dibaca satu kali, bahkan beberapa nilai status tidak pernah dibaca tetapi terus berubah! Update ini memungkinkan compiler untuk melewati pelacakan bila tidak diperlukan.
Compose compiler 1.5.6 juga mengaktifkan “intrinsic remember” secara default. Mode ini mengubah remember pada waktu kompilasi untuk memperhitungkan informasi yang sudah kita miliki tentang setiap parameter composable yang digunakan sebagai kunci untuk remember. Ini mempercepat kalkulasi untuk menentukan apakah ekspresi yang diingat perlu dievaluasi ulang, tetapi ini juga berarti jika Anda menempatkan titik henti sementara di dalam fungsi remember selama proses debug, fungsi ini mungkin tidak akan dipanggil lagi, karena compiler telah menghapus penggunaan remember dan menggantinya dengan kode yang berbeda.
Composable tidak akan dilewati
Kami juga berinvestasi agar kode yang Anda tulis menjadi lebih berkinerja, secara otomatis. Kami ingin mengoptimalkan kode yang Anda tulis secara intuitif, sehingga Anda tidak perlu mempelajari detail internal Compose untuk memahami mengapa composable Anda dikomposisi ulang padahal seharusnya tidak.
Rilis Compose ini menambahkan dukungan untuk mode eksperimental yang kami sebut “strong skipping mode”. Strong skipping mode melonggarkan beberapa aturan tentang perubahan apa saja yang dapat melewati rekomposisi, memindahkan keseimbangan ke arah yang diharapkan developer. Dengan mengaktifkan strong skipping mode, composable dengan parameter yang tidak stabil juga bisa melewati rekomposisi jika instance objek yang sama dimasukkan ke dalam parameternya. Selain itu, strong skipping mode secara otomatis mengingat lambda dalam komposisi yang menangkap nilai yang tidak stabil, selain perilaku default saat ini, yaitu mengingat lambda yang hanya mengambil tangkapan stabil. Strong skipping mode saat ini masih bersifat eksperimental dan dinonaktifkan secara default karena kami belum mempertimbangkannya untuk penggunaan produksi. Kami sedang mengevaluasi efeknya sebelum mengaktifkannya secara default di Compose 1.7. Lihat panduan kami untuk bereksperimen dengan strong skipping mode dan membantu kami menemukan setiap masalah.
Teks
Perubahan untuk padding font default
Rilis ini sekarang membuat setelan includeFontPadding bernilai false secara default. includeFontPadding adalah properti lama yang menambahkan padding ekstra berdasarkan metrik font di bagian atas baris pertama dan bagian bawah baris terakhir teks. Membuat setelan default ke false akan membuat tata letak teks default lebih sesuai dengan alat desain umum, sehingga semakin memudahkan kita mencocokkan spesifikasi desain yang dihasilkan. Setelah melakukan upgrade ke rilis Januari '24, Anda mungkin melihat perubahan kecil pada tata letak teks dan pengujian screenshot. Untuk informasi selengkapnya mengenai setelan ini, lihat postingan blog Memperbaiki Padding Font di Teks Compose dan dokumentasi developer.
Dukungan untuk penskalaan font nonlinear
Rilis Januari '24 menggunakan penskalaan font nonlinear untuk keterbacaan teks dan aksesibilitas yang lebih baik. Penskalaan font nonlinear mencegah elemen teks yang besar pada layar agar tidak terlalu besar dengan menerapkan kurva penskalaan nonlinear. Strategi penskalaan ini berarti bahwa teks yang besar tidak diskalakan dengan rasio yang sama seperti teks yang lebih kecil.
Seret dan lepas
Compose Foundation menambahkan dukungan untuk tarik lalu lepas tingkat platform, sehingga isi konten dapat ditarik ke aplikasi lain pada perangkat yang berjalan dalam mode multi-aplikasi. API ini 100% kompatibel dengan API View, yang berarti tarik lalu lepas yang dimulai dari View dapat ditarik ke Compose dan sebaliknya. Untuk menggunakan API ini, lihat contoh kode.
Fitur tambahan
Fitur lain yang disertakan dalam rilis ini termasuk:
- Dukungan untuk LookaheadScope dalam Lazy list.
- Memperbaiki composable yang telah dinonaktifkan tetapi tetap dipertahankan untuk digunakan kembali dalam Lazy list yang tidak difilter secara default dari pohon semantik.
- Keyframe berbasis spline dalam animasi.
- Menambahkan dukungan untuk pemilihan dengan mouse, termasuk teks.
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!