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 cần xác định các thực thể DeepLinkMatcher.

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

Vì nhiều trình so khớp có thể khớp với một yêu cầu, nên MatchResult sẽ 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 matchRequest và match trả về.

Tham số loại thứ hai, R, giữ nguyên thông tin khớp chuyên biệt mà không cần truyền kiểu dữ liệu xuống không được kiểm tra:

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

Các phương thức triển khai DeepLinkMatcher có thể chỉ định danh sách các thực thể DeepLinkMatcher.Filter để lọc yêu cầu trước khi đánh giá.

Thư viện này bao gồm 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 hành động, chẳng hạn như xem và chỉnh sửa:

Vì 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 chuẩn: StaticKeyDeepLinkMatcher, UriDeepLinkMatcher và BackStackMatcher. Nếu các trình so khớp này không đáp ứng yêu cầu của ứng dụng, bạn có thể tạo trình so khớp đườ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 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 khoá đích. Để biết thêm thông tin, hãy xem phần Khớp đường liên kết sâu URI.

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

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

Để xử lý ngăn xếp lui thu được trong hoạt động, hãy xem phần Khớp yêu cầu đến.