ההשקה של מעברי המעטפת איחדה וקידדה את השיטה להפעלת אנימציות בתוך המערכת, ומאפשרת אחזור של מידע מרוכז לגבי האנימציות שנקבעו להפעלה.
מעקב המעבר כולל נתונים על כל מעבר שמתרחש בתוך מעטפת WindowManager (WM), שמקורם גם בצד השרת של המערכת וגם בצד המעטפת. המעקב הזה מופעל באופן קבוע ב-Droidfood ומוטמע באופן אוטומטי בדוחות על באגים.
למידע נוסף על איסוף נתוני מעקב, ראו מעבר בין מעטפות.
ב-Winscope, בחלון התצוגה של המעברים מוצג המידע הזה לגבי מעברים שמכילים מידע גם מהשרת וגם מהצד של הלקוח. הצופה מורכב מתצוגת יומן טבלה שמכילה מידע ברמה גבוהה על המעבר בצד ימין ותצוגה מפורטת של כל מעבר בצד ימין:
איור 1. ניתוח של מעקב המעבר של המעטפת.
תצוגת טבלה
תצוגת הטבלה מכילה:
- Id: מזהה המעבר שנוצר רק לצורך ניפוי באגים.
- Type: סוג המעבר, כפי שמוגדר בקטע
Transitions.java
- Send Time: חותמת הזמן שבה המעבר נשלח מהשרת לקליפת המעטפת לטיפול.
- Dispatch Time: חותמת הזמן שבה המעבר נשלח לטיפול כדי להתחיל את ההפעלה.
- משך זמן: משך הזמן שלקח למעבר מההתחלה של ההפעלה ועד לסיום.
- סטטוס: אם המעבר היה:
- PLAYED:: הוצג.
- ABORTED: הבקשה בוטלה לפני ההפעלה. אפשר לבטל את המעבר מצד המעטפת או מצד WM.
- MERGED: המעבר ממולא על ידי בורר המעבר עם מעבר אחר שכבר פועל (בורר המעבר מחליט איך לטפל בכך).
תצוגה מפורטת
בנוסף לפרטים שמוצגים בתצוגת הטבלה, בתצוגה המפורטת של המעבר בקטע SELECTED TRANSITION מוצגים הפרטים הבאים:
handler
: פונקציית הטיפול במעברים שטיפלה באנימציה הזו.createTimeNs
: חותמת הזמן שבה המעבר נוצר בצד השרת של WM.finishTimeNs
: חותמת זמן של ההודעה שצד השרת של WM מקבל על סיום ההרצה של המעבר בצד המעטפת.endTransactionId
: הטרנזקציה הסופית של SurfaceFlinger שכלולה במעבר הזה.startTransactionId
: הטרנזקציה הראשונית של SurfaceFlinger שכלולה במעבר הזה.targets
: רשימת המשתתפים במעבר.type
: סוג המעבר, כפי שמוגדר בקטעTransitions.java
יעדים
היעדים הם הרכיבים שקשורים למעבר (בדרך כלל פעילויות או משימות). לכל יעד אנחנו מתעדים:
layerId
: השכבה שמתבצעת בה אנימציה (מההיררכיה של SurfaceFlinger).mode
: סוג ההנפשה שמתבצעת בשכבה הזו.windowId
: החלון שמתבצעת בו אנימציה (מההיררכיה של WindowManager).flags
: קבוצה חדשה של דגלים שחלים על השכבה.