איך מוודאים שהבדיקות עומדות בדרישות באמצעות WindowManager invariants

כדי להטמיע חוויית משתמש עקבית ואיכותית, וכדי למנוע בעיות שמובילות לכשלים ב-Compatibility Test Suite‏ (CTS), צריך להטמיע את העקרונות הבסיסיים של WindowManager‏ (WM) שמתוארים כאן. העקרונות האלה עוזרים להבטיח עמידה בהנחיות האיכות של אפליקציות לרכב. העקרונות האלה חלים על:

  • גרסאות Android שמשתמשות בארכיטקטורה של ריבוי חלונות, שהתחילה ב-Android 14 ונמשכה ב-Android 15 עם ממשק משתמש ניתן לשינוי גודל.

  • ממשק משתמש ניתן לשינוי גודל ב-Android והטמעות מותאמות אישית משלכם

יישום העקרונות האלה יעזור לכם להימנע מראש מרוב הבעיות שקשורות לתאימות ל-CTS ולבדיקות פונקציונליות.

הסברים על המונחים

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

עקרונות WM

כדי להבטיח תאימות מקסימלית ל-CTS, כדאי ליישם את העקרונות האלה בהטמעות של WM.

שימוש בהגדרה יציבה בהפעלת פעילות

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

העברת פעילויות רגילות למצב 'הופסקה'

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

מניעת הסתרה של תוכן פעילות רגיל

אל תציירו קישוטים מותאמים אישית או רכיבים בממשק המשתמש שמסתירים את התוכן של פעילות רגילה. אם מציירים שכבות-על מותאמות אישית (כמו אזור הכפתורים מותאם אישית של בקרת אקלים), צריך לדווח למערכת על המימדים באמצעות SystemOverlayinsets. ב-Android מגרסה 15 ואילך, משתמשים ב-DecorPanel בממשק משתמש שניתן לשינוי גודל. האפליקציות מסתמכות על השוליים הפנימיים האלה כדי לסדר את התוכן בצורה בטוחה.

הסתרת שכבות-על בבקשה למצב צפייה היקפית

כשאפליקציה מבקשת להשתמש במצב המלא, צריך להסתיר את כל רכיבי ממשק המשתמש הזמניים המותאמים אישית ולהסיר את SystemOverlayהשוליים שלהם. הפרעות קבועות משפיעות על הציפיות של האפליקציה לגבי פיקסלים. לפרטים על האופן שבו אפליקציות מבקשות ומטפלות במצב immersive, אפשר לעיין במאמר System bars, immersive mode, and edge-to-edge rendering.

החלת פינות מעוגלות רק ברמת התצוגה

אפשר להחיל פינות מעוגלות רק ברמת התצוגה באמצעות הגדרות המשאבים המתאימות ב-frameworks/base. אל תשתמשו בפינות מעוגלות שרירותיות במשטח של פעילות רגילה.

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

שמירה על גודל האפליקציה בבקשה למצב immersive

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