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

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

  • מצב אווירה: שימוש מקסימלי בזיכרון של 10MB.
  • מצב אינטראקטיבי: שימוש מקסימלי בזיכרון של 100MB.

חישוב השימוש בזיכרון

כדי לחשב את השימוש בזיכרון של תמונה או גופן בפורמט BMP בתצוגת שעון באמצעות פורמט תצוגת השעון, המערכת מבצעת את הפעולות הבאות:

  1. מבטלים את דחיסת התמונה או הגופן.
  2. בודקים אם האופטימיזציות הבאות רלוונטיות:
    • שינוי הגודל כך שיתאים טוב יותר למסך
    • חיתוך פיקסלים שקופים
    • דגימה לאחור ל-RGB565, ללא אובדן איכות

על סמך תיבת הגבול שנוצרה, הגודל מחושב באופן הבא:

  • לתמונות ולגופנים שמשתמשים ב-RGBA8888: 4 x רוחב x גובה
  • לתמונות ולגופנים בפורמט RGB565: 2 x רוחב x גובה
  • לתמונות ולגופנים שמשתמשים בתצורת הבייטמאפ ALPHA_8: רוחב x גובה

מצב אינטראקטיבי

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

  1. הגודל הלא מעובד של כל גופן וקטורי
  2. השימוש המשוער בגופן ברירת המחדל של המערכת
  3. הגודל הכולל של התמונות וגופני הבייטמאפ אחרי החיתוך, שינוי הגודל והפורמט

הגדרות אישיות

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

מצב אווירה ושכבות

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

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

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

שיטות לצמצום השימוש בזיכרון

כדי לצמצם את השימוש בזיכרון, אפשר להשתמש באופטימיזציות הבאות.

חיתוך וגיבוב של גופנים בפורמט bitmap

חותכים את התמונות ואת האובייקטים של BitmapFont כך שיתאימו לגודל המסך.

תצוגות השעון ב-Wear OS מוצגות ללא דחיסת תמונות. תמונה במסך מלא שרובה ריקה עשויה לתפוס 3KB בדיסק, אבל 750KB או יותר במסך בגודל 450x450 פיקסלים.

שימוש בגבהים עקביים של גופנים בפורמט bitmap

כשמשתמשים ב-BitmapFont, חשוב לוודא שכל התמונות של התו הן באותו גובה. כמו כן, חשוב לוודא שכל התמונות של המילים יהיו באותו גובה.

שימוש בגדלים עקביים של פריימים באנימציות

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

הטכניקה הזו מצמצמת את הגודל של תיבת הגבול המחושבת של האנימציה.

ביטול כפילויות בתמונות

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

הצגת ההתקדמות באמצעות קשתות

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

<PartDraw angle="0" width="400" height="400" name="ProgressBar"
          pivotX="0.5" pivotY="0.5 x="40" y="40">
    <Arc centerX="200" centerY="200" width="400" height="400"
         startAngle="0" endAngle="360">
        <!-- Completes a "progress loop" every minute. -->
        <Transform target="endAngle"
                   value="0 + (clamp([SECOND], 0, 60) - 0) * 6" />
        <Stroke cap="ROUND" color="#123456" thickness="10" />
    </Arc>
</PartDraw>

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

מיקום של תכונות נוספות בשעון ושל המחוגים בסוף קובץ המקור

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

הערכת השימוש בזיכרון של תצוגת השעון

כדי למדוד את השימוש בזיכרון של תצוגת השעון, אפשר להשתמש בכלי להערכת טביעת הזיכרון, שזמין במאגר watchface ב-GitHub.

  • הערה: טקסט הקישור מוצג כש-JavaScript מושבת
  • Arc
  • Line
  • מלבן