שיפור הביצועים של תצוגת השעון בעזרת האצת חומרה

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

למה להשתמש בלוח הציור עם שיפור מהירות באמצעות חומרה לתצוגת השעון?

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

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

האם תצוגת השעון משתמשת בשיפור המהירות באמצעות חומרה?

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

בדיקה באמצעות האפשרויות למפתחים

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

  1. במכשיר Wear OS, עוברים אל הגדרות > אפשרויות למפתחים.
  2. מפעילים את האפשרות ניפוי באגים בפרופיל ה-GPU.

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

  3. במכשיר, עוברים חזרה לתצוגת השעון.

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

בדיקה באמצעות adb

כדי לבדוק אם תצוגת השעון משתמשת בשיפור המהירות באמצעות חומרה, adb יש לבצע את השלבים הבאים:

  1. במכשיר Wear OS, משנים את תצוגת השעון לתצוגת השעון הרצויה לבדיקה.
  2. מפעילים את תצוגת השעון למשך מספר שניות במצב אינטראקטיבי.
  3. מריצים את הפקודה הבאה של adb כדי לבדוק אם תצוגת השעון משתמשת האצת חומרה:

    adb shell dumpsys gfxinfo [package-name]

אחרי הרצת הפקודה, תקבלו פלט שדומה לזה: דוגמה:

Applications Graphics Acceleration Info:
Uptime: 2239933 Realtime: 13568751

** Graphics info for pid 1100 [package-name] **

Stats since: 59875589194ns
Total frames rendered: 1213
Janky frames: 0 (0.00%)
50th percentile: 7ms
90th percentile: 18ms
95th percentile: 25ms
99th percentile: 150ms
Number Missed Vsync: 0
Number High input latency: 0
Number Slow UI thread: 0
Number Slow bitmap uploads: 0
Number Slow issue draw commands: 0
Number Frame deadline missed: 0

...

בפלט לדוגמה הזה, שימו לב לשורה Total frames rendered. באופן כללי, אם הפלט מציג מספר פריימים כולל שעברו רינדור גדול מ-0, תצוגת השעון משתמשת באזור עריכה מואץ. אחרת, סך כל הפריימים שעברו רינדור ונתונים אחרים של פריימים בדוח הם בדרך כלל 0.

עם זאת, מכיוון שהפלט של gfxinfo מיועד לחבילה המלאה של האפליקציה, ייתכן לראות מידע על זמן רינדור פריים מגורם אחר שאינו מאיצה באמצעות חומרה קנבס, כמו Activity שהאפליקציה שלך משתמשת בו למסך הגדרה. שפת תרגום עליך לוודא שתצוגת השעון היא המשטח היחיד ואז מריצים מחדש את הפקודה adb shell dumpsys gfxinfo כדי לבדוק אם הערך של Total frames rendered עולה.

שיטות מומלצות

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

הארכת חיי הסוללה

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

שימוש בפעולות שרטוט נתמכות

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

שמירה על תאימות בעת שימוש בהאצת חומרה

ההגדרה 'שיפור המהירות באמצעות חומרה' זמינה במכשירי Wear OS עם Android 9 (API רמה 28) ומעלה. אם רוצים להימנע מפעולת שרטוט ספציפית בגרסה ישנה יותר שבהם לא ניתן לשפר את המהירות באמצעות חומרה, או שיש שרטוט שלא נתמך על קנבס עם שיפור מהירות באמצעות חומרה, אפשר לסמן את Canvas.isHardwareAccelerated(), ומספק את הפונקציונליות החלופית.