שלבי הכתיבה והביצועים

כש-Compose מעדכן פריים, הוא עובר שלושה שלבים:

  • הרכב: התכונה 'יצירה' קובעת מה להציג. הוא מפעיל פונקציות שניתנות להרכבה ובונה את עץ ממשק המשתמש.
  • פריסה: המערכת קובעת את הגודל והמיקום של כל רכיב בעץ ממשק המשתמש.
  • ציור: התכונה Compose מעבדת בפועל את רכיבי ממשק המשתמש הנפרדים.

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

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

מידע נוסף זמין במדריך שלבי Jetpack Compose.

עקרונות כלליים

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

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

מקורות מידע נוספים