navigationevent
Update Terbaru | Rilis Stabil | Kandidat Rilis | Rilis Beta | Rilis Alfa |
---|---|---|---|---|
30 Juli 2025 | - | - | - | 1.0.0-alpha05 |
Mendeklarasikan dependensi
Untuk menambahkan dependensi pada navigationevent, Anda harus menambahkan repositori Maven Google ke project Anda. Baca repositori Maven Google untuk mengetahui informasi selengkapnya.
Tambahkan dependensi untuk artefak yang diperlukan dalam file build.gradle
bagi aplikasi atau modul Anda:
Groovy
dependencies { implementation "androidx.navigationevent:navigationevent:1.0.0-alpha05" }
Kotlin
dependencies { implementation("androidx.navigationevent:navigationevent:1.0.0-alpha05") }
Untuk informasi dependensi selengkapnya, lihat Menambahkan dependensi build.
Masukan
Masukan Anda membantu meningkatkan kualitas Jetpack. Beri tahu kami jika Anda menemukan masalah baru atau mempunyai masukan untuk meningkatkan kualitas library ini. Harap periksa masalah yang sudah diketahui dalam library ini sebelum membuat laporan baru. Anda dapat memberikan suara untuk masalah yang sudah diketahui dengan mengklik tombol bintang.
Lihat dokumentasi Issue Tracker untuk informasi selengkapnya.
Tidak ada catatan rilis untuk artefak ini.
Versi 1.0
Versi 1.0.0-alpha05
30 Juli 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha05
dirilis. Versi 1.0.0-alpha05 berisi commit ini.
Dukungan Hierarki Induk-Turunan:
NavigationEventDispatcher
kini dapat memiliki dispatcher induk dan turunan, yang membentuk struktur pohon hierarkis. Hal ini memungkinkan peristiwa navigasi untuk dipropagasi dan dikelola secara lebih fleksibel di seluruh komponen UI Compose yang kompleks dengan mencerminkan hierarki struktural UI melalui dispatcher berantai. (I194ac)
// Create a parent dispatcher that will manage navigation events at a higher level.
val parentDispatcher = NavigationEventDispatcher()
// Create a child dispatcher linked to the parent, forming a hierarchy.
val childDispatcher = NavigationEventDispatcher(parentDispatcher)
Properti isEnabled
hierarkis memungkinkan kontrol dispatcher dari atas ke bawah. Jika isEnabled
ditetapkan ke false
pada dispatcher, semua dispatcher turunannya akan otomatis dinonaktifkan. Fitur ini memungkinkan seluruh cabang sistem peristiwa navigasi dinonaktifkan secara efisien. (I9e985)
// Disabling the child dispatcher disables all its callbacks and any of its children recursively.
childDispatcher.isEnabled = false
Selain itu, properti isEnabled
di NavigationEventCallback
kini mematuhi status aktif dispatcher terkait. Artinya, callback dianggap diaktifkan hanya jika callback itu sendiri dan dispatchernya (termasuk ancestor-nya) diaktifkan, sehingga memastikan kontrol hierarkis yang konsisten atas aktivasi callback. (I1799a)
// Create a test callback and add it to the child dispatcher.
val callback1 = TestNavigationEventCallback(isEnabled = true)
childDispatcher.addCallback(callback1)
// Since the childDispatcher is disabled, the callback is effectively disabled as well.
assertThat(callback1.isEnabled).isFalse()
Metode dispose()
baru telah diperkenalkan untuk pembersihan yang tepat pada dispatcher dan turunannya. Memanggil dispose()
akan menghentikan pemroses untuk mencegah kebocoran memori, membuang semua dispatcher turunan secara rekursif, menghapus semua callback yang terdaftar ke dispatcher, dan membatalkan tautannya dari induknya. Hal ini menjamin resource dilepaskan dengan benar saat dispatcher tidak lagi diperlukan. (I9e985)
// Dispose the child dispatcher to clean up resources.
childDispatcher.dispose()
Jika ada metode publik yang dipanggil pada dispatcher yang dihapus, IllegalStateException
akan segera ditampilkan. Hal ini mencegah kegagalan senyap dan membantu developer mengidentifikasi penggunaan yang tidak tepat selama pengembangan. (Ic2dc3)
val callback2 = TestNavigationEventCallback()
// Attempting to use a disposed dispatcher will throw an exception.
assertThrows<IllegalStateException> {
childDispatcher.addCallback(callback2)
}
Catatan: Kami akan memperkenalkan Composable NavigationEventDispatcherOwner
baru yang otomatis mengelola dispatcher turunan dalam UI Compose di aosp/3692572. Namun, perubahan ini tidak masuk dalam rilis saat ini dan direncanakan untuk rilis berikutnya.
Navigation Testing Library
- Menambahkan modul
navigationevent-testing
untuk menyediakan utilitas pengujian khusus untuk librarynavigationevent
. (0e50b6) - Menambahkan class utilitas palsu
TestNavigationEventCallback
untuk pengujian. Objek ini mencatat panggilan metode callback dan menyimpan itemNavigationEvent
yang diterima untuk mendukung verifikasi. (4a0246) - Tambahkan fungsi utilitas tiruan
TestNavigationEvent
untuk membuat instanceNavigationEvent
dengan nilai default, sehingga menyederhanakan pengujian unit untuk pemrosesan peristiwa navigasi. (3b63f5) - Menambahkan class utilitas palsu
TestNavigationEventDispatcherOwner
untuk pengujian. Ini melacak jumlah peristiwa penggantian dan perubahan status yang diaktifkan untuk mendukung verifikasi interaksi dalam pengujian. (c8753e)
Perubahan API
- Pindahkan
NavigationEventInputHandler
dariandroidMain
kecommonMain
agar tersedia di kode umum KMP. Menambahkan metodepublic send*
baru untuk mengirimkan peristiwa. Ubah fungsi pengiriman diNavigationEventDispatcher
daripublic
menjadiinternal
; pengguna kini harus menggunakanNavigationEventInputHandler
untuk mengirim peristiwa. (Ia7114) - Mengganti nama
NavigationInputHandler
menjadiOnBackInvokedInputHandler
. (I63405)
Perbaikan Bug
- Memfaktorkan ulang
NavigationEventDispatcher
untuk mengurangi overhead dengan menghindari alokasi daftar perantara dan meningkatkan performa pengiriman callback. (I82702, I1a9d9) - Menambahkan anotasi
@FloatRange
ke kolomtouchX
,touchY
, danprogress
diNavigationEvent
untuk menerapkan rentang nilai yang valid pada waktu kompilasi dan meningkatkan keamanan API. (Iac0ec)
Versi 1.0.0-alpha04
2 Juli 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha04
dirilis. Versi 1.0.0-alpha04 berisi commit ini.
Perbaikan Bug
- Menggunakan
implementedInJetBrainsFork
untuknavigationevent-compose
dan menambahkan targetcommonStubs
agar sesuai dengan konvensi Compose. Perubahan yang diminta oleh JetBrains. (f60c79) - Memperbaiki penerapan plugin compiler Compose untuk Kotlin/Native guna memastikan pembuatan stub yang benar. Tidak ada dampak pada API atau perilaku publik. (1890c9)
Versi 1.0.0-alpha03
18 Juni 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha03
dirilis. Versi 1.0.0-alpha03 berisi commit ini.
Fitur Baru
- Memperkenalkan modul
navigationevent-compose
baru untuk mendukung fitur Jetpack Compose di librarynavigationevent
. (980d78) NavigationEvent
Compose telah menambahkan komposisi lokalLocalNavigationEventDispatcherOwner
baru. Metode ini menampilkan nilai nullable untuk menentukan secara lebih baik apakah nilai tersebut tersedia dalam komposisi saat ini.NavigationEventHandler
kini akan menampilkan error jika pemilik dasar tidak ditemukan. (62ffda)- Compose
NavigationEvent
telah menambahkan ComposableNavigationEventHandler
baru untuk menangani peristiwa (gestur kembali prediktif). Fungsi ini menyediakanFlow
objekNavigationEvent
yang harus dikumpulkan dalam lambda penangguhan yang Anda berikan c42ba6 :
NavigationEventHandler { progress: Flow<NavigationEvent> ->
// This block is executed when the back gesture begins.
try {
progress.collect { backEvent ->
// Handle gesture progress updates here.
}
// This block is executed if the gesture completes successfully.
} catch (e: CancellationException) {
// This block is executed if the gesture is cancelled
throw e
} finally {
// This block is executed either the gesture is completed or cancelled
}
}
Perubahan API
- Setiap
NavigationEventCallback
kini hanya dapat didaftarkan dengan satuNavigationEventDispatcher
dalam satu waktu; menambahkannya ke beberapa pengirim akan memunculkanIllegalStateException
. Perhatikan bahwa perilaku ini berbeda denganOnBackPressedDispatcher
, yang memungkinkan beberapa dispatcher. (e82c19) - Menjadikan
isPassThrough
sebagaival
untuk mencegah mutasi selama navigasi, yang dapat merusak pengirimanNavigationEvent
. (I0b287)
Versi 1.0.0-alpha02
4 Juni 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha02
dirilis. Versi 1.0.0-alpha02 berisi commit ini.
Perubahan API
- Ganti konstruktor sekunder
NavigationEventDispatcher
dengan argumen default. (I716a0) - Hapus properti prioritas dari
NavigationEventCallback
. Teruskan prioritas keNavigationEventDispatcher.addCallback()
sebagai gantinya. (I13cae)
Perbaikan Bug
- Memperbaiki
ConcurrentModificationException
yang dapat terjadi saatNavigationEventCallback.remove()
dipanggil karena memodifikasi daftar internal objek yang dapat ditutup secara bersamaan. (b/420919815)
Versi 1.0.0-alpha01
20 Mei 2025
androidx.navigationevent:navigationevent-*:1.0.0-alpha01
dirilis. Versi 1.0.0-alpha01 berisi commit ini.
Fitur Baru
- Library
androidx.navigationevent
menyediakan API yang mengutamakan KMP untuk menangani kembali sistem serta Kembali Prediktif.NavigationEventDispatcher
berfungsi sebagai API umum untuk mendaftarkan satu atau beberapa instanceNavigationEventCallback
untuk menerima peristiwa kembali sistem. - Lapisan ini berada di bawah API yang dirilis sebelumnya di
androidx.activity
dan bertujuan untuk menjadi pengganti yang lebih tidak berpihak untuk menggunakan API Aktivitas di komponen tingkat yang lebih tinggi atau langsung menggunakan APIOnBackInvokedDispatcher
framework Android. APIandroidx.activity
telah ditulis ulang di atas Navigation Event API sebagai bagian dari Activity 1.12.0-alpha01.