navigationevent
Bản cập nhật mới nhất | Bản phát hành ổn định | Bản phát hành dùng thử | Bản phát hành beta | Bản phát hành alpha |
---|---|---|---|---|
Ngày 30 tháng 7 năm 2025 | - | - | - | 1.0.0-alpha05 |
Khai báo phần phụ thuộc
Để thêm một phần phụ thuộc vào navigationevent, bạn phải thêm kho lưu trữ Google Maven vào dự án. Đọc nội dung Kho lưu trữ Maven của Google để biết thêm thông tin.
Thêm các phần phụ thuộc cho cấu phần phần mềm bạn cần trong tệp build.gradle
cho ứng dụng hoặc mô-đun:
Groovy
dependencies { implementation "androidx.navigationevent:navigationevent:1.0.0-alpha05" }
Kotlin
dependencies { implementation("androidx.navigationevent:navigationevent:1.0.0-alpha05") }
Để biết thêm thông tin về các phần phụ thuộc, hãy xem bài viết Thêm phần phụ thuộc vào bản dựng.
Ý kiến phản hồi
Ý kiến phản hồi của bạn có thể giúp chúng tôi cải thiện Jetpack. Hãy cho chúng tôi biết nếu bạn phát hiện lỗi mới hoặc có ý tưởng cải thiện thư viện này. Vui lòng xem các lỗi hiện có trong thư viện này trước khi báo một lỗi mới. Bạn có thể thêm lượt bình chọn cho lỗi hiện có bằng cách nhấp vào nút dấu sao.
Xem tài liệu về Công cụ theo dõi lỗi để biết thêm thông tin.
Không có ghi chú phát hành cho cấu phần phần mềm này.
Phiên bản 1.0
Phiên bản 1.0.0-alpha05
Ngày 30 tháng 7 năm 2025
Phát hành androidx.navigationevent:navigationevent-*:1.0.0-alpha05
. Phiên bản 1.0.0-alpha05 bao gồm các thay đổi sau.
Hỗ trợ hệ phân cấp Mẹ – Con:
Giờ đây, NavigationEventDispatcher
có thể có các trình điều phối gốc và con, tạo thành một cấu trúc cây phân cấp. Điều này cho phép các sự kiện điều hướng lan truyền và được quản lý linh hoạt hơn trên các thành phần giao diện người dùng Compose phức tạp bằng cách phản ánh hệ thống phân cấp cấu trúc của giao diện người dùng thông qua các trình điều phối được liên kết. (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)
Thuộc tính phân cấp isEnabled
cho phép kiểm soát từ trên xuống của một trình điều phối. Khi isEnabled
được đặt thành false
trên một bộ điều phối, nó sẽ tự động vô hiệu hoá tất cả các bộ điều phối cấp dưới. Tính năng này cho phép tắt toàn bộ các nhánh của hệ thống sự kiện điều hướng một cách hiệu quả. (I9e985)
// Disabling the child dispatcher disables all its callbacks and any of its children recursively.
childDispatcher.isEnabled = false
Ngoài ra, thuộc tính isEnabled
trên NavigationEventCallback
hiện tuân theo trạng thái đã bật của trình điều phối được liên kết. Điều này có nghĩa là một lệnh gọi lại chỉ được coi là đã bật nếu cả lệnh gọi lại đó và trình điều phối của lệnh gọi lại (bao gồm cả các lệnh gọi lại cấp trên) đều được bật, đảm bảo khả năng kiểm soát nhất quán theo hệ phân cấp đối với việc kích hoạt lệnh gọi lại. (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()
Một phương thức dispose()
mới đã được ra mắt để dọn dẹp đúng cách các trình điều phối và các trình điều phối con. Việc gọi dispose()
sẽ dừng các trình nghe để ngăn tình trạng rò rỉ bộ nhớ, đệ quy loại bỏ tất cả trình điều phối con, xoá tất cả lệnh gọi lại đã đăng ký với trình điều phối và huỷ liên kết trình điều phối đó với trình điều phối mẹ. Điều này đảm bảo các tài nguyên được giải phóng đúng cách khi không còn cần đến các trình điều phối. (I9e985)
// Dispose the child dispatcher to clean up resources.
childDispatcher.dispose()
Nếu có phương thức công khai nào được gọi trên một trình điều phối đã bị loại bỏ, thì IllegalStateException
sẽ được truyền ngay lập tức. Điều này giúp ngăn chặn các lỗi không báo cáo và giúp nhà phát triển xác định việc sử dụng không đúng cách trong quá trình phát triển. (Ic2dc3)
val callback2 = TestNavigationEventCallback()
// Attempting to use a disposed dispatcher will throw an exception.
assertThrows<IllegalStateException> {
childDispatcher.addCallback(callback2)
}
Lưu ý: Chúng tôi sẽ giới thiệu một thành phần kết hợp NavigationEventDispatcherOwner
mới, tự động quản lý một trình điều phối con trong giao diện người dùng Compose trong aosp/3692572. Tuy nhiên, thay đổi này không có trong bản phát hành hiện tại và dự kiến sẽ có trong bản phát hành tiếp theo.
Thư viện kiểm thử điều hướng
- Thêm mô-đun
navigationevent-testing
để cung cấp các tiện ích kiểm thử chuyên dụng cho thư việnnavigationevent
. (0e50b6) - Thêm lớp tiện ích giả
TestNavigationEventCallback
để kiểm thử. Thao tác này ghi lại các lệnh gọi phương thức gọi lại và lưu trữ các mụcNavigationEvent
đã nhận được để hỗ trợ quy trình xác minh. (4a0246) - Thêm hàm tiện ích giả
TestNavigationEvent
để tạo các thực thểNavigationEvent
có giá trị mặc định, đơn giản hoá các kiểm thử đơn vị để xử lý sự kiện điều hướng. (3b63f5) - Thêm lớp tiện ích giả
TestNavigationEventDispatcherOwner
để kiểm thử. Thao tác này theo dõi số lượng sự kiện dự phòng và sự kiện thay đổi trạng thái đã bật để hỗ trợ xác minh hoạt động tương tác trong các thử nghiệm. (c8753e)
Thay đổi về API
- Di chuyển
NavigationEventInputHandler
từandroidMain
sangcommonMain
để cung cấp trong mã chung KMP. Thêm các phương thứcpublic send*
mới để gửi sự kiện. Thay đổi các hàm điều phối trênNavigationEventDispatcher
từpublic
thànhinternal
; giờ đây, người dùng phải sử dụngNavigationEventInputHandler
để gửi sự kiện. (Ia7114) - Đổi tên
NavigationInputHandler
thànhOnBackInvokedInputHandler
. (I63405)
Sửa lỗi
- Tái cấu trúc
NavigationEventDispatcher
để giảm mức hao tổn bằng cách tránh phân bổ danh sách trung gian và cải thiện hiệu suất gửi lệnh gọi lại. (I82702, I1a9d9) - Thêm chú giải
@FloatRange
vào các trườngtouchX
,touchY
vàprogress
trongNavigationEvent
để thực thi các dải giá trị hợp lệ tại thời gian biên dịch và cải thiện độ an toàn của API. (Iac0ec)
Phiên bản 1.0.0-alpha04
Ngày 2 tháng 7 năm 2025
Phát hành androidx.navigationevent:navigationevent-*:1.0.0-alpha04
. Phiên bản 1.0.0-alpha04 bao gồm các thay đổi sau.
Sửa lỗi
- Đã dùng
implementedInJetBrainsFork
đểnavigationevent-compose
và thêm mục tiêucommonStubs
để khớp với các quy ước của Compose. Thay đổi do JetBrains yêu cầu. (f60c79) - Đã khắc phục việc áp dụng trình bổ trợ trình biên dịch Compose cho Kotlin/Native để đảm bảo tạo đúng phần giữ chỗ. Không ảnh hưởng đến các API công khai hoặc hành vi. (1890c9)
Phiên bản 1.0.0-alpha03
Ngày 18 tháng 6 năm 2025
Phát hành androidx.navigationevent:navigationevent-*:1.0.0-alpha03
. Phiên bản 1.0.0-alpha03 bao gồm các thay đổi sau.
Tính năng mới
- Giới thiệu một mô-đun
navigationevent-compose
mới để hỗ trợ các tính năng của Jetpack Compose trong thư việnnavigationevent
. (980d78) NavigationEvent
Compose đã thêm một thành phần kết hợp cục bộLocalNavigationEventDispatcherOwner
mới. Hàm này trả về một giá trị rỗng để xác định rõ hơn liệu giá trị đó có trong cấu trúc hiện tại hay không.NavigationEventHandler
hiện sẽ hiển thị lỗi nếu không tìm thấy chủ sở hữu cơ sở. (62ffda)NavigationEvent
Compose đã thêm một thành phần kết hợpNavigationEventHandler
mới để xử lý các sự kiện (cử chỉ xem trước thao tác quay lại). Thư viện này cung cấpFlow
của các đối tượngNavigationEvent
mà bạn phải thu thập trong lambda tạm ngưng mà bạn cung cấp 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
}
}
Thay đổi về API
- Giờ đây, mỗi
NavigationEventCallback
chỉ có thể được đăng ký với mộtNavigationEventDispatcher
tại một thời điểm; việc thêmNavigationEventCallback
vào nhiều điều phối viên sẽ tạo ra mộtIllegalStateException
. Xin lưu ý rằng hành vi này khác vớiOnBackPressedDispatcher
, cho phép nhiều trình điều phối. (e82c19) - Tạo
isPassThrough
mộtval
để ngăn chặn quá trình đột biến trong khi điều hướng, điều này có thể làm gián đoạn quá trình gửiNavigationEvent
. (I0b287)
Phiên bản 1.0.0-alpha02
Ngày 4 tháng 6 năm 2025
Phát hành androidx.navigationevent:navigationevent-*:1.0.0-alpha02
. Phiên bản 1.0.0-alpha02 bao gồm các thay đổi sau.
Thay đổi về API
- Thay thế hàm khởi tạo phụ của
NavigationEventDispatcher
bằng các đối số mặc định. (I716a0) - Xoá thuộc tính ưu tiên khỏi
NavigationEventCallback
. Thay vào đó, hãy truyền mức độ ưu tiên đếnNavigationEventDispatcher.addCallback()
. (I13cae)
Sửa lỗi
- Khắc phục
ConcurrentModificationException
có thể xảy ra khiNavigationEventCallback.remove()
được gọi do đồng thời sửa đổi danh sách nội bộ các đối tượng có thể đóng. (b/420919815)
Phiên bản 1.0.0-alpha01
Ngày 20 tháng 5 năm 2025
Phát hành androidx.navigationevent:navigationevent-*:1.0.0-alpha01
. Phiên bản 1.0.0-alpha01 bao gồm các thay đổi sau.
Tính năng mới
- Thư viện
androidx.navigationevent
cung cấp một API ưu tiên KMP để xử lý thao tác quay lại hệ thống cũng như tính năng Xem trước thao tác quay lại.NavigationEventDispatcher
đóng vai trò là một API chung để đăng ký một hoặc nhiều thực thểNavigationEventCallback
để nhận các sự kiện quay lại hệ thống. - Lớp này nằm bên dưới các API đã phát hành trước đó trong
androidx.activity
và nhằm mục đích thay thế ít ý kiến hơn cho việc sử dụng API Hoạt động trong các thành phần cấp cao hơn hoặc trực tiếp sử dụng APIOnBackInvokedDispatcher
của khung Android. Các APIandroidx.activity
đã được viết lại dựa trên Navigation Event API trong Activity 1.12.0-alpha01.