הגדרת אירוע

אירוע מפעיל שינויים במצב ויוזם פעולות. אירועים פועלים כאותות, שנשלחים מממשק המשתמש של המערכת או מחוץ לתהליך באמצעות intent. האירועים מיידעים את ממשק המשתמש הגמיש על מקרים שדורשים תגובה.

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

המבנה של אירוע

מזהה ייחודי (ID) חובה שמזהה אירוע. המזהה הזה מסווג את סוג המופע, כמו _System_TaskOpenEvent או _System_PanelEmptyEvent.

בנוסף למזהה הזה, אירוע יכול להכיל אסימונים, צמדי מפתח/ערך, כדי לספק הקשר ופרטים לגבי האירוע. האסימונים האלה מאפשרים סינון מדויק יותר של אירועים, ומאפשרים להפעיל מעברים או פעולות רק בתנאים ספציפיים.

האסימונים מועברים לאירוע כרשימה של צמדי מפתח/ערך שמופרדים באמצעות נקודה ופסיק (;). הנה רשימת המפתחות שנתמכים על ידי המערכת:

מפתח תיאור
panelId מזהה חלונית ספציפית בממשק המשתמש שמשויכת לאירוע.
component מציין את שם הרכיב, כמו פעילות שמקושרת לאירוע.
package מציין את שם החבילה שקשור לאירוע.
panelToVariantId מציין את וריאנט היעד של חלונית בהקשרים ספציפיים. משתמשים במאפיין הזה כדי להפעיל אנימציות מדורגות על ידי האזנה למעבר בין חלוניות. לדוגמה, הפעלת המעבר של חלונית B למצב סגור כשחלונית A עוברת למצב פתוח.

לדוגמה:

"component=com.android.app;panelId=panel1"

לוגיקה של בדיקת התאמה של אירועים

כשאירוע נשלח, הוא צריך להתאים לקריטריונים מוגדרים כדי להפעיל מעבר או פעולה. תהליך ההתאמה מתבצע בשני שלבים:

  • התאמה מדויקת של אירוע id: הערך של id באירוע שנשלח חייב להיות זהה בדיוק לערך של id שצוין במסנן של אירוע המעבר או הפעולה. אם המזהים לא זהים, האירוע לא נחשב כהתאמה.

  • התאמה חלקית של טוקנים של אירועים: כשמזהי האירועים תואמים, המערכת משתמשת בהתאמה חלקית כדי להעריך את הטוקנים של האירוע בהשוואה לטוקנים שמוגדרים במסנן.

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

    עם זאת, האירוע שנשלח יכול להכיל טוקנים נוספים שלא הוגדרו במפורש במסנן. טוקנים נוספים לא מונעים התאמה. במקום זאת, המערכת מתעלמת מהם בתהליך ההתאמה.

    לעומת זאת, אם המסנן מציין טוקן שלא קיים באירוע שנשלח, או אם הערך של טוקן תואם לא זהה, הוא לא נחשב להתאמה.

לדוגמה, נניח שהגדרתם מעבר שמופעל כשמתבצעת פעולה id="app_open" ב-panelId="panel1" עם component="com.android.myapp.Activity".

אם לאירוע שנשלח יש id="app_open", panelId="panel1" ו-component="com.android.myapp.Activity", נוצרת התאמה. כל קריטריוני הסינון מתקיימים והערך הספציפי יותר עבור Activity value in the dispatched event is considered a match forcom.android.myapp`.

עם זאת, ההתאמה תיכשל אם האירוע יישלח כש-id="app_open",‏ panelId="panel1" ו-component="com.android.yourapp.Activity". למרות ש-id ו-panelId זהים, component לא שווה ל-component במעבר – com.android.myapp – לא זהה ל-com.android.yourapp באירוע שנשלח.

טריגר מעבר

יכול להיות שתוכנית מעבר תתאים למינוי, אבל זה לא אומר שהיא תופעל. אפשר להפעיל רק מעבר אחד לכל אירוע. ממשק משתמש שניתן להתאמה מיועד להפעיל רק את ההתאמה הקרובה ביותר.

לדוגמה, אם יש התאמה בין שני מעברים – אחד עם שם רכיב ואחד בלי שם רכיב -m – רק המעבר עם שם הרכיב מופעל.

שליחה וטיפול באירועים

האירועים הם מרכזיים להתנהגות הדינמית של ממשק המשתמש שניתן להתאמה. אפשר לשלוח אירועים מממשק המשתמש של המערכת או מתהליכים חיצוניים באמצעות intent.

אירועי מערכת

ה-framework מגדיר כמה אירועים במערכת שמסייעים בפעולות האלה:

מאפיין תיאור
_System_OnHomeEvent

(SYSTEM_HOME_EVENT_ID)
מציין שהמערכת קיבלה בקשה להצגת המסך Home. ב-AAOS, הדף Home יכול להיות תצורה גמישה של חלונות, כמו שילוב של ווידג'טים, או אפילו מפה. האירוע הזה חשוב למעברים או לפעולות שמתבססים על הצגת ממשק הבית הראשי למשתמש.
_System_TaskOpenEvent

(SYSTEM_TASK_OPEN_EVENT_ID)

מופעל כשפותחים משימה או אפליקציה. האירוע הכללי הזה יכול להפעיל פעולות או מעברים על סמך הפעלת האפליקציה.

האירוע הזה מכיל טוקנים כמו panelId ו-component.

_System_TaskCloseEvent

(SYSTEM_TASK_CLOSE_EVENT_ID)
אותות שמשימה או אפליקציה נסגרו, והם מקבילים ל-_System_TaskOpenEvent. כך המערכת יכולה להגיב לסגירת אפליקציות. הפעולה הזו יכולה להפעיל מעברים כדי להחזיר חלונית למצב ברירת מחדל או כדי להתחיל פעולות ניקוי אחרות.
_System_TaskPanelEmptyEvent

(SYSTEM_TASK_PANEL_EMPTY_EVENT_ID)

האירוע הזה מופעל כשלוח ספציפי מתרוקן, והוא כולל את הערך panelId כטוקן, כדי שהטריגרים יסוננו בהתאם ללוח שהתרוקן.

האירוע הזה חשוב לשחזור שגיאות אמין ולהפעלה מחדש של אפליקציות כאשר תוכן משויך קורס או מסתיים באופן בלתי צפוי, כדי למנוע את הצגת חלוניות ריקות בממשק המשתמש.

לדוגמה, אם אפליקציית ControlBar קורסת, אפשר להגדיר פעולה שתזהה את האירוע הזה בחלונית שלה ותפעיל מחדש את ControlBar באופן אוטומטי.

.
_System_EnterSuwEvent

(SYSTEM_ENTER_SUW_EVENT_ID)
מציין את המערכת שנכנסת לאשף ההגדרה (SUW). האירוע הזה מסמן את מוכנות המערכת, ואפשר להגדיר אותו כך שיפעיל אפליקציות או יציג חלוניות ייעודיות אחרי שהמערכת מאותחלת. כדי להיכנס למצב מערכת קריטי כזה, צריך אירוע ייעודי שיפעיל את ההתאמות או הפעולות המתאימות בממשק המשתמש.
_System_ExitSuwEvent

(SYSTEM_EXIT_SUW_EVENT_ID)
מציין שהמערכת יוצאת מאשף ההגדרה (SUW). בדומה ל-_System_EnterSuwEvent, האירוע הזה מאפשר למערכת להגיב להשלמת תהליך ההגדרה על ידי הפעלת אפליקציות ברירת מחדל או מעבר לממשק משתמש רגיל.
_System_OnAnimationEndEvent

(SYSTEM_ON_ANIMATION_END_EVENT_ID)
מופעל כשאנימציה מסתיימת בממשק המשתמש. אפשר להשתמש באירוע הזה כדי להפעיל פעולות או שינויים במצב שקורים אחרי השלמת מעבר חזותי.

האירוע הזה מכיל טוקן של variantId כדי לציין את הווריאציה שהוצגה בסוף האנימציה.