יצירת מופעים של DeepLinkMatcher

כדי למפות מופעים נכנסים של DeepLinkRequest למפתחות שאפשר להוסיף למקבץ הפעילויות הקודמות (back stack) של האפליקציה, מגדירים מופעים של DeepLinkMatcher.

DeepLinkMatcher היא מחלקה מופשטת שכוללת שתי שיטות, match ו-matchRequest. מחלקות משנה צריכות להטמיע את matchRequest, שמקבלת DeepLinkRequest ומחזירה DeepLinkMatcher.MatchResult אם הבקשה תואמת, או null אחרת.

יכול להיות שכמה התאמות יתאימו לבקשה אחת, ולכן MatchResult מטמיע את Comparable כדי לדרג את התוצאות ולבחור את ההתאמה הטובה ביותר.

פרמטרים של הקלדה

המחלקות DeepLinkMatcher כוללות שני פרמטרים של סוג גנרי: DeepLinkMatcher<T : Any, R : DeepLinkMatcher.MatchResult<T>>.

  • T : Any: סוג מפתח הניווט ליעד (לדוגמה, UserProfileKey או NavKey) שמוחזר כשיש התאמה לקישור העומק.
  • R : DeepLinkMatcher.MatchResult<T>: סוג המשנה הספציפי של MatchResult שמוחזר על ידי matchRequest ו-match.

פרמטר הסוג השני, R, שומר מידע התאמה מיוחד בלי לדרוש המרה לא בטוחה:

בקשות לסינון מקדים

בהטמעות של DeepLinkMatcher אפשר לציין רשימה של מופעים של DeepLinkMatcher.Filter כדי לסנן בקשות לפני ההערכה שלהן.

הספרייה כוללת פונקציות עזר ליצירת מסננים נפוצים:

הגישה הזו מאפשרת לכם לעשות שימוש חוזר באותו דפוס URI לפעולות שונות, כמו צפייה לעומת עריכה:

מכיוון ש-Filter הוא ממשק פונקציונלי (SAM), אפשר גם ליצור מסננים באמצעות ביטויי למדה:

שימוש בשיטות השוואה שסופקו

הספרייה כוללת שלוש הטמעות רגילות של DeepLinkMatcher: ‫StaticKeyDeepLinkMatcher,‏ UriDeepLinkMatcher ו-BackStackMatcher. אם התנאים האלה לא מתאימים לדרישות של האפליקציה, אפשר ליצור תנאים מותאמים אישית להתאמת קישורי עומק.

כדי להתאים בקשות שממלאות את כל המסננים שצוינו לקישורי עומק בסיסיים שאין להם ארגומנטים לחילוץ, משתמשים ב-StaticKeyDeepLinkMatcher.

לדוגמה, כדי לטפל בכוונות של ACTION_APPLICATION_PREFERENCES:

כדי להתאים היררכיות של כתובות URI לתבניות ולחלץ ארגומנטים, משתמשים בפונקציה UriDeepLinkMatcher. לדוגמה, אפשר להתאים את www.example.com/users/{id} כדי לחלץ את הארגומנט id למפתח יעד. מידע נוסף זמין במאמר בנושא התאמה של קישורי עומק של URI.

יצירת מקבץ פעילויות קודמות (back stack) סינתטי

כדי להגדיר איך ליצור מקבץ פעילויות קודמות (back stack) סינתטי מהתאמה מוצלחת, משתמשים ב-BackStackMatcher. במקום ליצור מופע של BackStackMatcher באופן ישיר, קוראים לפונקציית התוסף withBackStack ב-DeepLinkMatcher אחר. ‫withBackStack עוטפת את המקלט ב-BackStackMatcher שמחזיר BackStackMatchResult שמכיל מקבץ פעילויות קודמות (back stack) סינתטי List. הפונקציה BackStackMatchResult מעבירה את ההשוואה לתוצאת ההתאמה הבסיסית, ולכן אם עוטפים פונקציית התאמה ב-withBackStack, דירוג ההתאמה המקורי שלה נשמר.

כדי לטפל במצבור הפעולות הקודמות שנוצר בפעילות, אפשר לעיין במאמר בנושא התאמה של בקשה נכנסת.