Tạo các thực thể DeepLinkMatcher

Để liên kết các thực thể DeepLinkRequest đến với các khoá có thể thêm vào ngăn xếp lui của ứng dụng, bạn hãy xác định các thực thể DeepLinkMatcher.

DeepLinkMatcher là một lớp trừu tượng bao gồm 2 phương thức là matchmatchRequest. Các lớp con phải triển khai matchRequest. Lớp này lấy DeepLinkRequest và trả về DeepLinkMatcher.MatchResult nếu yêu cầu khớp hoặc null nếu không.

Vì nhiều đối tượng so khớp có thể so khớp một yêu cầu duy nhất, nên MatchResult triển khai Comparable để xếp hạng kết quả và chọn kết quả phù hợp nhất.

Tham số loại

Lớp DeepLinkMatcher khai báo hai tham số kiểu dữ liệu chung: DeepLinkMatcher<T : Any, R : DeepLinkMatcher.MatchResult<T>>.

  • T : Any: Loại khoá điều hướng đích đến (chẳng hạn như UserProfileKey hoặc NavKey) được trả về khi đường liên kết sâu khớp.
  • R : DeepLinkMatcher.MatchResult<T>: Loại phụ MatchResult cụ thể do matchRequestmatch trả về.

Tham số loại thứ hai, R, duy trì thông tin so khớp chuyên biệt mà không yêu cầu truyền xuống chưa kiểm tra:

Yêu cầu lọc trước

Các hoạt động triển khai DeepLinkMatcher có thể chỉ định một danh sách các thực thể DeepLinkMatcher.Filter để lọc các yêu cầu trước khi đánh giá chúng.

Thư viện này có các hàm trợ giúp để tạo bộ lọc phổ biến:

Phương pháp này cho phép bạn sử dụng lại cùng một mẫu URI cho nhiều thao tác, chẳng hạn như xem so với chỉnh sửa:

Filter là một giao diện chức năng (SAM), nên bạn cũng có thể tạo bộ lọc bằng biểu thức lambda:

Sử dụng trình so khớp được cung cấp

Thư viện này bao gồm 3 cách triển khai DeepLinkMatcher tiêu chuẩn: StaticKeyDeepLinkMatcher, UriDeepLinkMatcherBackStackMatcher. Nếu các đối sánh này không đáp ứng yêu cầu của ứng dụng, bạn có thể tạo đối sánh đường liên kết sâu tuỳ chỉnh.

Đối với các đường liên kết sâu cơ bản không có đối số để trích xuất, hãy sử dụng StaticKeyDeepLinkMatcher để so khớp các yêu cầu đáp ứng tất cả bộ lọc được cung cấp.

Ví dụ: để xử lý ý định cho ACTION_APPLICATION_PREFERENCES:

Để so khớp các URI phân cấp với các mẫu và trích xuất đối số, hãy sử dụng UriDeepLinkMatcher. Ví dụ: bạn có thể so khớp www.example.com/users/{id} để trích xuất đối số id vào một khoá đích. Để biết thêm thông tin, hãy xem bài viết So khớp đường liên kết sâu URI.

Tạo một ngăn xếp lui tổng hợp

Để xác định cách tạo một ngăn xếp lui ảo từ một kết quả khớp thành công, hãy sử dụng BackStackMatcher. Thay vì khởi tạo BackStackMatcher trực tiếp, hãy gọi hàm tiện ích withBackStack trên một DeepLinkMatcher khác. withBackStack gói trình nhận trong một BackStackMatcher trả về BackStackMatchResult chứa ngăn xếp lui nhân tạo List. Vì BackStackMatchResult uỷ quyền so sánh cho kết quả trùng khớp cơ bản, nên việc bao bọc một đối tượng so khớp trong withBackStack sẽ giữ lại thứ hạng trùng khớp ban đầu.

Để xử lý ngăn xếp lui kết quả trong hoạt động của bạn, hãy xem phần So khớp yêu cầu đến.