מושגים ויישום ב-Jetpack פיתוח נייטיב
באופן בסיסי, יצירת מצב היא יישום מצטבר של שינויים במצב ממשק המשתמש. הסטטוס תמיד קיים, והוא משתנה כתוצאה מאירועים. בטבלה הבאה מפורטים ההבדלים בין אירועים לבין מצב:
אירועים |
מדינה |
חולפות, לא צפויות וקיימות לפרק זמן מוגבל. |
תמיד קיים. |
הקלט של יצירת המצב. |
הפלט של ייצור המצב. |
התוצאה של ממשק המשתמש או מקורות אחרים. |
הנתונים מוצגים בממשק המשתמש. |
אירועים יכולים להגיע מהמקורות הבאים:
- משתמשים: בזמן האינטראקציה עם ממשק המשתמש של האפליקציה.
- מקורות אחרים של שינוי מצב: ממשקי API שמציגים נתוני האפליקציה משכבות של ממשק משתמש, דומיין או נתונים, כמו אירועי זמן קצוב לתפוגה של סרגל אינטראקטיבי, תרחישי שימוש או מאגרי מידע.
ממשקי API של מצב הייצור
יש שני ממשקי API עיקריים שמשמשים ליצירת מצב, בהתאם לשלב בצינור:
Pipeline Stage |
API |
קלט |
כדי למנוע קפיצות בממשק המשתמש, מומלץ להשתמש בממשקי API אסינכרוניים כדי לבצע עבודה מחוץ לשרשור UI. לדוגמה, Coroutines או Flows ב-Kotlin, ו-RxJava או callbacks בשפת התכנות Java. |
פלט |
כדי לבטל את התוקף של ממשק המשתמש ולעבד אותו מחדש כשמצב האפליקציה משתנה, צריך להשתמש בממשקי API של מאגרי נתונים שניתן לצפות בהם. לדוגמה, StateFlow או LiveData. מחזיקי נתונים מסוג Observable מבטיחים שלממשק המשתמש תמיד יהיה מצב ממשק משתמש להצגה במסך |
מבין שתי האפשרויות, הבחירה בממשק API אסינכרוני לקלט משפיעה יותר על אופי צינור הייצור של המצב מאשר הבחירה בממשק API ניתן לצפייה לפלט. הסיבה לכך היא שהקלט מכתיב את סוג העיבוד שאפשר להחיל על צינור הנתונים.
הרכבה של צינור עיבוד נתונים לייצור
בקטעים הבאים מפורטות טכניקות ליצירת מצבים שמתאימות במיוחד לסוגים שונים של קלט, וממשקי ה-API של הפלט שמתאימים להן. כל צינור להעברת נתונים של מצב הוא שילוב של קלט ופלט, והוא צריך להיות:
- מודע למחזור החיים: אם ממשק המשתמש לא גלוי או לא פעיל, צינור הייצור של המצב לא צריך לצרוך משאבים כלשהם, אלא אם נדרש אחרת באופן מפורש.
- קל להבנה: ממשק המשתמש צריך להיות מסוגל להציג בקלות את מצב ממשק המשתמש שנוצר. השיקולים לגבי הפלט של צינור הייצור של המצב משתנים בין ממשקי API שונים של View, כמו מערכת View או Jetpack פיתוח נייטיב.
סוגי פלט בצינורות עיבוד נתונים של מצב הייצור
בחירת ה-API של הפלט למצב ממשק המשתמש, ואופי ההצגה שלו, תלויים בעיקר ב-API שבו האפליקציה משתמשת כדי לעבד את ממשק המשתמש. באפליקציות ל-Android, אפשר לבחור להשתמש ב-Views או ב-Jetpack פיתוח נייטיב. השיקולים כאן כוללים:
- מצב קריאה באופן מודע למחזור החיים.
- האם המצב צריך להיות חשוף בשדה אחד או יותר מתוך מחזיק המצב.
בטבלה הבאה מפורטים ממשקי ה-API שבהם צריך להשתמש בצינור ליצירת מצב כשמשתמשים ב-Views framework:
קלט |
פלט |
ממשקי API של הפעלה חד-פעמית |
|
Stream APIs |
|
ממשקי API של שידור ושל פעולה חד-פעמית |
|