Compose Runtime
androidx.compose.runtime
androidx.compose.runtime.rxjava2
androidx.compose.runtime.rxjava3
androidx.compose.runtime.saveable
androidx.compose.runtime.snapshots
(למידע נוסף על כל חבילות Compose)
| העדכון האחרון | גרסה יציבה | גרסה מועמדת להפצה | גרסת בטא | גרסת אלפא |
|---|---|---|---|---|
| 9 בספטמבר 2026 | 1.12.1 | - | - | 1.13.0-alpha03 |
מבנה
Compose הוא שילוב של 7 מזהי קבוצה ב-Maven בתוך androidx. כל קבוצה מכילה קבוצת משנה ממוקדת של פונקציות, ולכל אחת מהן יש קבוצה משלה של הערות על הגרסה.
בטבלה הזו מוסבר על הקבוצות ויש קישורים לכל קבוצה של הערות מוצר.
| קבוצה | תיאור |
|---|---|
| compose.animation | ליצור אנימציות באפליקציות Jetpack Compose כדי לשפר את חוויית המשתמש. |
| compose.compiler | שינוי של פונקציות @Composable והפעלת אופטימיזציות באמצעות פלאגין של Kotlin Compiler. |
| compose.foundation | כתיבת אפליקציות ב-Jetpack Compose באמצעות אבני בניין מוכנות לשימוש והרחבת הבסיס כדי ליצור רכיבים משלכם למערכת העיצוב. |
| compose.material | אפשר ליצור ממשקי משתמש של Jetpack Compose באמצעות רכיבי Material Design מוכנים לשימוש. זוהי נקודת הכניסה ברמה הגבוהה ביותר של Compose, והיא נועדה לספק רכיבים שתואמים לאלה שמתוארים בכתובת www.material.io. |
| compose.material3 | אפשר ליצור ממשקי משתמש של Jetpack Compose באמצעות רכיבי Material Design 3, הדור הבא של Material Design. Material 3 כולל רכיבים ועיצובים מעודכנים, ותכונות התאמה אישית של Material You כמו צבע דינמי. הוא מתוכנן להיות עקבי עם הסגנון החזותי וממשק המשתמש החדשים של Android 12. |
| compose.runtime | אבני הבניין הבסיסיות של מודל התכנות וניהול המצב של Compose, וזמן הריצה המרכזי של פלאגין מהדר Compose לטירגוט. |
| compose.ui | רכיבים בסיסיים של ממשק המשתמש של Compose שנדרשים לאינטראקציה עם המכשיר, כולל פריסה, ציור וקלט. |
הצהרה על יחסי תלות
כדי להוסיף תלות ב-Compose, צריך להוסיף את מאגר Maven של Google לפרויקט. מידע נוסף זמין במאמר בנושא מאגר Maven של Google.
אתם יכולים להוסיף את יחסי התלות של הארטיפקטים שאתם צריכים בקובץ build.gradle של האפליקציה או המודול:
Groovy
dependencies { implementation "androidx.compose.runtime:runtime:1.12.1" implementation "androidx.compose.runtime:runtime-livedata:1.12.1" implementation "androidx.compose.runtime:runtime-rxjava2:1.12.1" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.runtime:runtime:1.12.1") implementation("androidx.compose.runtime:runtime-livedata:1.12.1") implementation("androidx.compose.runtime:runtime-rxjava2:1.12.1") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
מידע נוסף זמין במאמר הוספת יחסי תלות ב-build.
משוב
המשוב שלכם עוזר לנו לשפר את Jetpack. נשמח לדעת אם גיליתם בעיות חדשות או אם יש לכם רעיונות איך לשפר את הספרייה הזו. כדאי לעיין בבעיות הידועות בספרייה הזו לפני שמדווחים על בעיה. כדי להוסיף הצבעה בדיווח על בעיה קיימת, לוחצים על כפתור הכוכב.
מידע נוסף זמין במאמרי העזרה בנושא Issue Tracker.
גרסה 1.13
גרסה 1.13.0-alpha03
9 בספטמבר 2026
androidx.compose.runtime:runtime-*:1.13.0-alpha03 מופץ. גרסה 1.13.0-alpha03 מכילה את השמירות האלה.
ביצועים
- הוספת
SlotWriter.forAllDataInRememberOrderinline כדי לבטל הקצאות (Ie39f6)
גרסה 1.13.0-alpha02
26 באוגוסט 2026
androidx.compose.runtime:runtime-*:1.13.0-alpha02 מופץ. גרסה 1.13.0-alpha02 מכילה את השמירות האלה.
שינויים ב-API
- נוסף
withLocalRetainedValuesStore, שמאפשר להחזיר ערכים מלמדת התוכן. (I8e871, b/542168593) - נוספו עומסים של
rememberSerializableשניתן להגדיר כ-nullable עבורMutableState. (I77b83, b/543285462)
גרסה 1.13.0-alpha01
12 באוגוסט 2026
androidx.compose.runtime:runtime-*:1.13.0-alpha01 מופץ. גרסה 1.13.0-alpha01 מכילה את השמירות האלה.
שינויים ב-API
שינינו את ה-feature flag
LinkTableכדי לצמצם את המחלוקות במערכות משולבות של קבוצות כללי proguard, וכדי לשפר את התאימות כשמצמצמים את האפליקציה מחוץ ל-Gradle. התחביר של proguard שמשמש להגדרת הדגל השתנה מעט. אפשר לראות את זה בדוגמה הבאה, שימו לב לסוגריים שנוספו (I419da):-assumevalues public class androidx.compose.runtime.ComposeRuntimeFlags { static boolean isLinkBufferComposerEnabled() return true; }הפקודות
produceState()ו-Flow.collectAsState()מקבלות עכשיו ארגומנטSnapshotMutationPolicyכדי לשלוט במדיניות השוויון והמיזוג של אובייקטStateהבסיסי. (I0c167, b/405128869)הגדרנו את
@ComposableTargetכניתן לחזרה. מידע נוסף מופיע במסמכי התיעוד המעודכנים. (I99a89, b/481422057)נוספה האפשרות
RecompositionTracerלתיעוד תהליך ביטול התוקף של רה-קומפוזיציה (I1dbc1, Ia991d, b/531813367)הוספנו את ה-observable
keysב-SaveableStateHolderכדי לפשט את הניווט ואת ניהול המצב של מקבץ הפעילויות הקודמות (back stack), וכדי לבטל את הצורך במעקב חיצוני אחריkey. גישה דרךholder.keys; הסרה באמצעותremoveState. (I9bbbb, b/398887924)נוסף
staticCompositionLocalWithComputedDefaultOfכדי ליצורProvidableCompositionLocalsשפועלים כסטטיים כשמספקים אותם, או מחושבים כשלא מספקים אותם. (I844e4)
תיקוני באגים
- תוקנה בעיה ב-
GapComposerשיכולה לגרום למופעים שלRememberObserverאחרי בלוקwithCompositionLocalלהפעיל באופן שגוי את קריאות החזרה (callback) של הפונקציה forget לפניRememberObserverבבלוק. (I4d54c) - תוקנה חריגה בנפח נמוך בכתיבה לאובייקט של מצב שניתן לשינוי. (I48194, b/503110696)
- תוקן באג ב-
SnapshotStateSet.writeToParcelשגרם לכך שהמערכת ביצעה סריאליזציה רק של הרשומה הראשונה. (I64f4c, b/537461421) - המאפיינים
CancellationExceptionשמשמשים לביטולLaunchedEffectולזכירתCoroutineScopesשונו כדי שיהיו ברורים יותר כשהם מופיעים במעקב אחר ביצוע התוכנית. (I89840, b/449897855) - בוצעה אופטימיזציה של אתחול אובייקט נלווה של מחלקות ערכים
compose:runtime(ComposeStackTraceMode,GroupKind) באמצעות שימוש בשיטות גישה דינמיות (getters). (I50640) - הסרת הדרישה
compileSdk37 (If78b4)
External Contribution
- תוקן באג שגרם לכך שהרכבים הראשיים לא הגיבו כשמסירים הרכב משני עם שגיאה במהלך Live Edit. (I3717c)
- תוקנה בעיה שקשורה לשחזור של Live Edit אחרי שגיאה בקומפוזיציית משנה, כך שקומפוזיציות האב ממשיכות לעקוב אחרי שינויים במצב. (I63fb5)
גרסה 1.12
גרסה 1.12.1
9 בספטמבר 2026
androidx.compose.runtime:runtime-*:1.12.1 יוצא ללא שינויים מאז גרסה 1.12.0. גרסה 1.12.1 מכילה את השמירות האלה.
גרסה 1.12.0
12 באוגוסט 2026
androidx.compose.runtime:runtime-*:1.12.0 מופץ. גרסה 1.12.0 מכילה את השמירות האלה.
שינויים חשובים מאז גרסה 1.11.0:
עדכונים בטבלת משבצות הפרסום הניסיוניות
- התקדמנו בייצוב ההטמעה הניסיונית של
LinkTableשהצגנו בגרסה 1.11. ההטמעה החדשה נועדה לשפר את הביצועים של רה-קומפוזיציה, במיוחד עם שינויים קטנים ואקראיים. אנחנו ממליצים למשתמשים לנסות את הגרסה החדשה שלSlotTableולדווח על בעיות שהם נתקלים בהן. מידע נוסף זמין בכתובתComposeRuntimeFlags.isLinkBufferComposerEnabled.
תופעת לוואי עם Keys API
- נוספה פונקציית עומס יתר ל-
SideEffectשמקבלת ארגומנטים של מפתח. אפשר להשתמש ב-API החדש כדי להפעילSideEffects חד-פעמיים בלי להשתמש ב-LaunchedEffectאו ב-DisposableEffectשהבלוקיםCoroutineScopeאוonDisposeשלהם לא בשימוש. (I528b2, b/476108743)
גרסה 1.12.0-rc01
29 ביולי 2026
androidx.compose.runtime:runtime-*:1.12.0-rc01 מופץ. גרסה 1.12.0-rc01 מכילה את השמירות האלה.
גרסה 1.12.0-beta02
1 ביולי 2026
androidx.compose.runtime:runtime-*:1.12.0-beta02 מופץ. גרסה 1.12.0-beta02 מכילה את השמירות האלה.
תיקוני באגים
- תוקן
ArrayIndexOutOfBoundsExceptionב-LinkComposerכשמשתמשים ב-MovableContentמוטמעים. (I85daf)
גרסה 1.12.0-beta01
17 ביוני 2026
androidx.compose.runtime:runtime-*:1.12.0-beta01 מופץ. גרסה 1.12.0-beta01 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה שבה לא נשלחה הודעה למעקב אחר יישום תמונת מצב אם אובייקט מצב נוצר בתמונת מצב אחת ואז שונה בתמונת מצב מקבילה לפני שהראשונה הוחלה. (Ide27f, b/451479063)
- תוקנה דליפת זיכרון פוטנציאלית באופן המעקב אחר
derivedStateOf()ערכים בהרכבה. העברת פעולות כתיבה לאובייקטים שנקראו על ידי מצב נגזר גרמה לכך שמופעderivedStateOf()נשמר על ידי ההרכבה עד שההרכבה נסגרה. אם המערכת לא זוכרת אתderivedStateOf()בצורה נכונה, הדליפה הזו יכולה להיות משמעותית כי כל קומפוזיציה עשויה ליצור חדש. (Ib5d87, b/516904513) - תוקנה בעיה ב-
LinkComposerשיכולה לגרום לכך שרכיבים שאפשר להרכיב ידולגו במקום להרכיב אותם מחדש כשמבטלים את התוקף שלהם במהלך ההרכבה. (Ie29fe) - תוקנה בעיה בעומס היתר של vararg של
rememberשגרמה לכך שהערך שנשמר לא בוטל, והוחזר ערך שגוי מ-remember. המצב הזה קורה כשמבצעים קומפוזיציה מחדש שלrememberעם פחות מפתחות זהים לאלה שהיו קודם, פחות רכיבים מהסוף של המערך. כדי שהתיקון יחול, צריך לקמפל מחדש את הקוד המושפע. (I0736b)
External Contribution
- נוספה מעקב מפורט אחר העבודה של
DisposableEffectו-SideEffectבזמן הריצה של Compose. (Ie451f)
גרסה 1.12.0-alpha03
19 במאי 2026
androidx.compose.runtime:runtime-*:1.12.0-alpha03 מופץ. גרסה 1.12.0-alpha03 מכילה את השמירות האלה.
תיקוני באגים
- נפתרו כמה בעיות ב-
LinkTableשבהן לא אוכלסו עקבות מחסנית אבחון או שהיה חסר מידע (I3918c) - תוקנה בעיה בסוג נתונים פנימי שיכולה לגרום לחריגה במקרים נדירים עם תוכן שניתן להעברה. (Ic478f, b/507724717)
- תוקנה בעיה בהתנהגות הדילוג של
LinkComposer, שגרמה להתנהגות לא עקבית בהשוואה ל-GapComposer, לחישוב מחדש לא צפוי של ארגומנטים שמוגדרים כברירת מחדל ולפסק זמן של בדיקות. (I783dc)
גרסה 1.12.0-alpha02
6 במאי 2026
androidx.compose.runtime:runtime-*:1.12.0-alpha02 מופץ. גרסה 1.12.0-alpha02 מכילה את השמירות האלה.
שינויים ב-API
- נוספה עומס יתר ל-
SideEffectשמקבל ארגומנטים של מפתח. אפשר להשתמש ב-API החדש כדי להפעילSideEffectsחד-פעמי בלי להשתמש ב-LaunchedEffectאו ב-DisposableEffectשהבלוקיםCoroutineScopeאוonDisposeשלהם לא בשימוש. (I528b2, b/476108743)
גרסה 1.12.0-alpha01
22 באפריל 2026
androidx.compose.runtime:runtime-*:1.12.0-alpha01 מופץ. גרסה 1.12.0-alpha01 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה ב-LinkTable שיכולה לגרום לפעולות לא תקינות של צומת. (I491c3)
- compileSdk של Compose עודכן ל-API 37. כלומר, כשמשתמשים ב-Compose, נדרשת גרסת AGP מינימלית של 9.2.0. (Id45cd, b/413674743)
- תוקנה בעיה במטמון ב-LinkTable שבה הוספות של תוכן שמפעילות שינוי גודל עלולות לגרום לקריאה של ערכים לא עדכניים, מה שעלול לגרום לכך ש-CompositionLocals לא ייפתרו. (I8016c)
- תוקן באג שגרם לכך ש-
T.writableRecordהציגIllegalStateExceptionמיותרים (Ia778f, b/440975176)
גרסה 1.7 של Runtime Tracing
גרסה 1.7.0-rc01
18 בספטמבר 2024
androidx.compose.runtime:runtime-tracing:1.7.0-rc01 מופץ. גרסה 1.7.0-rc01 מכילה את השמירות האלה.
גרסה 1.0 של Runtime Tracing
גרסה 1.0.0-beta01
29 בנובמבר 2023
androidx.compose.runtime:runtime-tracing:1.0.0-beta01 מופץ. גרסה 1.0.0-beta01 מכילה את השמירות האלה.
גרסה 1.0.0-alpha05
15 בנובמבר 2023
androidx.compose.runtime:runtime-tracing:1.0.0-alpha05 מופץ. גרסה 1.0.0-alpha05 מכילה את השמירות האלה.
תיקוני באגים
- הצמדת יחסי תלות לגרסאות היציבות הנתמכות המוקדמות ביותר (כלומר compose-runtime ו-tracing-perfetto) – כך נפתרה בעיה שבה compose-runtime-tracing הביא גרסה חדשה יותר של compose-runtime לאפליקציה.
גרסה 1.0.0-alpha04
23 באוגוסט 2023
androidx.compose.runtime:runtime-tracing:1.0.0-alpha04 מופץ. גרסה 1.0.0-alpha04 מכילה את השמירות האלה.
תכונות חדשות
- הכלי תואם לגרסאות העדכניות של Benchmark ו-Tracing Perfetto, ומאפשר תמיכה ב-Composition Tracing בהפעלת האפליקציה (cold start), למשל ב-AndroidX Benchmark וב-Android Studio (החל מגרסת Hedgehog Beta 2).
שינויים ב-API
- השם של
androidx.tracing.perfetto.Traceשונה לandroidx.tracing.perfetto.PerfettoSdkTrace. (I44af8) - התאמה של ממשקי ה-API של Tracing Perfetto SDK ל-
android.os.Trace. (I73ba0, b/282199917) - דרישות מוקדמות למעקב בזמן הפעלת האפליקציה. (Iad890)
- קבצים של ממשקי API ציבוריים וניסיוניים שמוזגו (I0f2e1, b/278769092)
גרסה 1.0.0-alpha02
8 בפברואר 2023
androidx.compose.runtime:runtime-tracing:1.0.0-alpha02 מופץ. גרסה 1.0.0-alpha02 מכילה את השמירות האלה.
תכונות חדשות
- אין שינויים פונקציונליים. בוצעו אופטימיזציות רבות של הביצועים בתלות במורד הזרם
androidx.tracing:tracing-perfetto*.
גרסה 1.0.0-alpha01
7 בספטמבר 2022
androidx.compose.runtime:runtime-tracing:1.0.0-alpha01 מופץ. גרסה 1.0.0-alpha01 מכילה את השמירות האלה.
תכונות חדשות
-
androidx.compose.runtime:runtime-tracingהיא ספרייה שמאפשרת מעקב מורחב באפליקציית Compose – אם יש כלים שתומכים בה (בקרוב). הגרסה הראשונית הזו היא 1.0.0-alpha01.
גרסה 1.11
גרסה 1.11.4
1 ביולי 2026
androidx.compose.runtime:runtime-*:1.11.4 מופץ. גרסה 1.11.4 מכילה את השמירות האלה.
גרסה 1.11.3
17 ביוני 2026
androidx.compose.runtime:runtime-*:1.11.3 מופץ. גרסה 1.11.3 מכילה את השמירות האלה.
גרסה 1.11.2
19 במאי 2026
androidx.compose.runtime:runtime-*:1.11.2 מופץ. גרסה 1.11.2 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה בסוג נתונים פנימי שיכולה לגרום לחריגה במקרים נדירים עם תוכן שניתן להעברה. (Ic478f, b/507724717)
גרסה 1.11.1
6 במאי 2026
androidx.compose.runtime:runtime-*:1.11.1 מופץ. גרסה 1.11.1 מכילה את השמירות האלה.
גרסה 1.11.0
22 באפריל 2026
androidx.compose.runtime:runtime-*:1.11.0 מופץ. גרסה 1.11.0 מכילה את השמירות האלה.
שינויים חשובים מאז גרסה 1.10.0:
New Experimental SlotTable
- כתבנו מחדש את
SlotTable, שהוא מבנה הנתונים הפנימי שמשמש את זמן הריצה של Compose כדי לעקוב אחר היררכיית הקומפוזיציה, לקבוע את השינויים שנגרמים על ידי קומפוזיציה מחדש ולאחסן ערכים שנשמרו. השינוי הזה מתמקד בשיפור הביצועים של רה-קומפוזיציה, והוא עושה זאת בעיקר באמצעות שימוש בפחות פעולות של העתקת זיכרון בהשוואה למאגר הנתונים הזמניSlotTable. שינויים מסוימים בהיררכיית הקומפוזיציה, כמו שינוי הסדר של רשימה ארוכה של פריטים, יכולים להרכיב מחדש את הקומפוזיציה במהירות כפולה בהשוואה לגרסה הקודמתSlotTable. רוב הפעולות האחרות מהירות יותר ב-10% בערך בהרכבה מחדש בהטמעה החדשה שלSlotTable. ההטמעה שלSlotTableשנעשה בה שימוש בזמן הריצה משפיעה על כל השיטות שניתנות להרכבה ולא דורשת קומפילציה מחדש. השימוש ב-SlotTableהחדש הוא שינוי שחל על כל האפליקציה, כולל על יחסי התלות. - ההטמעה הזו של
SlotTableעדיין ניסיונית ומושבתת כרגע כברירת מחדל. כדי להפעיל את האפשרות הזו, צריך להגדיר את הערךtrueבשדהComposeRuntimeFlags.isLinkBufferComposerEnabled. בגרסאות build של אפליקציות עם הפעלה של מזעור, הערך הזה מוגדר כ-false בקובץ ברירת המחדל proguard-rules.pro שמסופק עם זמן הריצה. כדי להפעיל את התכונה החדשהSlotTableבסביבת הייצור, צריך לשנות את ההנחה הזו ל-true בקובץproguard-rules.proשל האפליקציה. מידע נוסף זמין במאמרי העזרה בנושאComposeRuntimeFlags.isLinkBufferComposerEnabled.
הגדרות ברירת מחדל של המארח לגבי אזורים מקומיים של יצירה
- נוסף
compositionLocalWithHostDefaultOfשמאפשר להגדיר CompositionLocals שחוזרים לסביבת האירוח (למשל תגי AndroidView) עבור ערכי ברירת המחדל שלהם.
תצפית יעילה יותר snapshotFlow באמצעות SnapshotFlowManager
- השקנו את
SnapshotFlowManagerAPI כדי לאפשר תצפיות יעילות יותר עלsnapshotFlow. שימוש חוזר באותוSnapshotFlowManagerלכמה מופעים שלsnapshotFlowיגרום לרישום של פחות משקיפים של החלת תמונת מצב, ולעיבוד מהיר יותר של עדכוני מצב.
גרסה 1.11.0-rc01
8 באפריל 2026
androidx.compose.runtime:runtime-*:1.11.0-rc01 מופץ. גרסה 1.11.0-rc01 מכילה את השמירות האלה.
גרסה 1.11.0-beta02
25 במרץ 2026
androidx.compose.runtime:runtime-*:1.11.0-beta02 מופץ. גרסה 1.11.0-beta02 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה ב-WASM שבה קודי הגיבוב של הזהויות תמיד החזירו 0 (I9d70c)
- תוקנה בעיה שבה יכול להיות שמצב נגזר של רכיב אב לא יבוטל בצורה נכונה כשמשתנים התלויות של מצב נגזר מוטמע (Ia7981, b/481750019)
- תוקנה בעיה ב-
LinkTableשיכולה לגרום לכתיבות לא חוקיות אחרי סילוק של קומפוזיציה. (I5c97a) - תוקנה בעיה ב-
LinkTableשיכולה לגרום לכתיבות לא חוקיות כשמשנים את גודל הטבלה במהלך פעולת העתקה (Ie7edf) - תוקנה בעיה ב-
LinkTableשגורמת לעדכון שגוי של הערך המאוחסן של צומת (I58a4a) - הקיבולת של
LinkTableמאותחלת עכשיו לקיבולת קטנה יותר, וכך נמנעות שגיאות OOM כשיוצרים הרבה קומפוזיציות משנה במכשירים עם גודל ערימה קטן יותר (I112b9)
גרסה 1.11.0-beta01
11 במרץ 2026
androidx.compose.runtime:runtime-*:1.11.0-beta01 מופץ. גרסה 1.11.0-beta01 מכילה את השמירות האלה.
שינויים ב-API
-
SnapshotFlowManagerוהעומס שלsnapshotFlowשמקבל את הפרמטרmanagerמסומנים עכשיו כניסיוניים (I5c1a5, b/486077876, I0de71, b/486077876)
תיקוני באגים
- תוקן קראש מסוג Apply is called on deactivated node (הפונקציה Apply מופעלת בצומת לא פעיל) בהרכב שניתן להשהיה (I880c0, b/484300733)
- תוקנה בעיה ב-
LinkTableשיכולה לגרום לArrayIndexOutOfBoundsExceptionsאו למטא-נתונים להיות פגומים כשמשתמשים ב-MovableContent. (I8452b) - תוקנה בעיה ב-
LinkTableשמנעה את האכלוס התקין של עקבות אבחון (I59868) - תוקנה בעיה ב-SlotTable החדש שבה שימוש ב-
RememberObserversב-MovableContentעלול לגרום ללולאתOutOfMemoryError/infiniteכשמסירים אותו. (I884e7)
גרסה 1.11.0-alpha06
25 בפברואר 2026
androidx.compose.runtime:runtime-*:1.11.0-alpha06 מופץ. גרסה 1.11.0-alpha06 מכילה את השמירות האלה.
גרסה 1.11.0-alpha05
11 בפברואר 2026
androidx.compose.runtime:runtime-*:1.11.0-alpha05 מופץ. גרסה 1.11.0-alpha05 מכילה את השמירות האלה.
שינויים ב-API
-
ComposeRuntimeFlags.isMovingNestedMovableContentEnabled, feature flag בזמן ריצה, הוסר. (I3ee62, b/455588848) - המרנו את
HostDefaultKeyמ-open classל-interface. כך אפשר להטמיע במפתחות כמה מנגנוני חיפוש (כמוViewTreeHostDefaultKey) בלי להיות מוגבלים על ידי ירושה של מחלקה יחידה, וכך לשפר את ההרחבה של סביבות אירוח מותאמות אישית. (I917a2) - הערכים
HostDefaultProviderו-LocalHostDefaultProviderהם עכשיוpublic, כך שסביבות אירוח בהתאמה אישית יכולות להגדיר ערכים ללוקאלים ספציפיים לפלטפורמה. (I5bdbe)
תיקוני באגים
- בוטלה האפשרות של קיפאון הדדי (deadlock) כשמריצים שני
snapshotFlowבו-זמנית בשני שרשורים. (Ib4339) - תוקנה בעיה בטבלת הקישורים שיכולה לגרום לכלי להשמיט פונקציות composable בהיררכיה ולקשר באופן שגוי קומפוזיציות משנה (I7178e)
External Contribution
- תוקנה בעיית חיוביות כוזבות ב-Lint כשמשתמשים באופרטור אונרי כדי לשנות את הערך בבלוק produceState (I1c7c9)
גרסה 1.11.0-alpha04
28 בינואר 2026
androidx.compose.runtime:runtime-*:1.11.0-alpha04 מופץ. גרסה 1.11.0-alpha04 מכילה את השמירות האלה.
שינויים ב-API.
- כתבנו מחדש את
SlotTable, שהוא מבנה הנתונים הפנימי שמשמש את זמן הריצה של Compose כדי לעקוב אחר היררכיית הקומפוזיציה, לקבוע את השינויים שנגרמים על ידי קומפוזיציה מחדש ולאחסן ערכים שנשמרו. השינוי הזה מתמקד בשיפור הביצועים של רה-קומפוזיציה, והוא עושה זאת בעיקר באמצעות שימוש בפחות פעולות של העתקת זיכרון בהשוואה למאגר הנתונים הזמניSlotTable. שינויים מסוימים בהיררכיית הקומפוזיציה, כמו שינוי הסדר של רשימה ארוכה של פריטים, יכולים להרכיב מחדש את הקומפוזיציה במהירות כפולה בהשוואה לגרסה הקודמתSlotTable. רוב הפעולות האחרות מהירות יותר ב-10% בערך בהרכבה מחדש בהטמעה החדשה שלSlotTable. ההטמעה שלSlotTableשבה נעשה שימוש בסביבת זמן הריצה משפיעה על כל השיטות שניתנות להרכבה ולא דורשת קומפילציה מחדש. השימוש ב-SlotTableהחדש הוא שינוי שחל על כל האפליקציה, כולל על יחסי התלות. - ההטמעה של
SlotTableמושבתת כרגע כברירת מחדל, ואפשר להפעיל אותה על ידי הגדרתComposeRuntimeFlags.isLinkBufferComposerEnabledלערךtrue. - בגרסאות build של הפצה שבהן מופעלת מיניפיקציה, הערך הזה מוגדר כ-
falseבקובץ ברירת המחדלproguard-rules.proשמסופק עם זמן הריצה. כדי להפעיל אתSlotTableהחדש בייצור, צריך לשנות את ההנחה הזו ל-trueבקובץproguard-rules.proשל האפליקציה. מידע נוסף זמין במאמרי העזרה בנושאComposeRuntimeFlags.isLinkBufferComposerEnabled. (Ib741d, b/268366116)
תכונות חדשות
- נוסף
compositionLocalWithHostDefaultOfשמאפשר להגדירCompositionLocalsשמוחזרות לסביבת האירוח (למשל תגי Android View) לערכי ברירת המחדל שלהן. (I15b81)
תיקוני באגים
- הבטחנו שקריאות
Snapshot.sendApplyNotificationsלא יחזרו עד שיישלחו ההתראות הנדרשות על הגשת בקשה. (I95f20, b/418800424) - למנוע הורדה של עקבות מחסנית של מידע על המקור למפתחות קבוצה במקרים שבהם מידע על המקור לא קיים בזמן הריצה. (If3712)
- הכרת
ComposeToolingFlags. ההגדרות האלה מיועדות להיות קבועות (בניגוד לComposeRuntimeFlags) והן משמשות לתכונות של כלי פיתוח שיש להן השפעה משמעותית על הביצועים. (I87863)
External Contribution
- API ניסיוני חדש של
RecomposerInfo#errorState (I0decc) - שינוי הערך של ההערה
AnnotationRetentionשלFunctionKeyMetaל-BINARY (I53495)
גרסה 1.11.0-alpha03
14 בינואר 2026
androidx.compose.runtime:runtime-*:1.11.0-alpha03 מופץ. גרסה 1.11.0-alpha03 מכילה את השמירות האלה.
שינויים ב-API
- הוספנו את המחלקה
SnapshotFlowManagerוהוספנו פרמטר אופציונליSnapshotFlowManagerל-snapshotFlow, כדי לאפשר למשתמשים לבצע אופטימיזציה של מספר הצופים בהחלת תמונת המצב שנרשמים. (I6289b, b/446746211)
תיקוני באגים
- נוספה הערת מעקב להוספת תוכן שניתן להזזה (Ibf176)
גרסה 1.11.0-alpha02
17 בדצמבר 2025
androidx.compose.runtime:runtime-*:1.11.0-alpha02 מופץ. גרסה 1.11.0-alpha02 מכילה את השמירות האלה.
שינויים ב-API
- הדגל
isMovableContentUsageTrackingEnabledהוסר (I71e2b, b/427960130)
External Contribution
- תוקן באג ב-Live Edit שגרם לכך שלא ניתן היה לשחזר את העריכה אחרי שגיאה. (Ieb34f)
גרסה 1.11.0-alpha01
3 בדצמבר 2025
androidx.compose.runtime:runtime-*:1.11.0-alpha01 מופץ. גרסה 1.11.0-alpha01 מכילה את השמירות האלה.
שינויים ב-API
- השם של
RetainedValuesStore.getExitedValueOrDefaultשונה לשםconsumeExitedValueOrDefaultc7a0929 - הסרה של API ניסיוני להרכבה מחדש בו-זמנית.(c8af15d)
גרסה 1.10
גרסה 1.10.6
25 במרץ 2026
androidx.compose.runtime:runtime-*:1.10.6 מופץ. גרסה 1.10.6 מכילה את השמירות האלה.
תיקוני באגים
- תוקן קראש מסוג 'לא ניתן להשבית שימוש חוזר מהשורש אם הוא נגרם על ידי קבוצות אחרות' בהרכב שניתן להשהיה (I474b5, b/488433633)
- תוקן קראש מסוג Apply is called on deactivated node (הפונקציה Apply מופעלת בצומת לא פעיל) בהרכב שניתן להשהיה (I880c0, b/484300733)
גרסה 1.10.5
11 במרץ 2026
androidx.compose.runtime:runtime-*:1.10.5 מופץ. גרסה 1.10.5 מכילה את השמירות האלה.
גרסה 1.10.4
25 בפברואר 2026
androidx.compose.runtime:runtime-*:1.10.4 יוצא ללא שינויים מאז גרסה 1.10.3. גרסה 1.10.4 מכילה את השמירות האלה.
גרסה 1.10.3
11 בפברואר 2026
androidx.compose.runtime:runtime-*:1.10.3 מופץ. גרסה 1.10.3 מכילה את השמירות האלה.
גרסה 1.10.2
28 בינואר 2026
androidx.compose.runtime:runtime-*:1.10.2 מופץ. גרסה 1.10.2 מכילה את השמירות האלה.
גרסה 1.10.1
14 בינואר 2026
androidx.compose.runtime:runtime-*:1.10.1 מופץ. גרסה 1.10.1 מכילה את השמירות האלה.
גרסה 1.10.0
3 בדצמבר 2025
androidx.compose.runtime:runtime-*:1.10.0 מופץ. גרסה 1.10.0 מכילה את השמירות האלה.
גרסה 1.10.0-rc01
19 בנובמבר 2025
androidx.compose.runtime:runtime-*:1.10.0-rc01 מופץ. גרסה 1.10.0-rc01 מכילה את השמירות האלה.
תיקוני באגים
- הגנה מפני שינוי חוזר כשמבצעים הקלטה של מצבים נגזרים ב-
SnapshotStateObserver(I7b862, b/435655844, b/456249373, b/402535073) - [Lint] תיקון באג קטן כדי שהכלי לזיהוי באגים יתריע על הקצאת ערך מורכב בצורה תקינה. (I08319, b/456775556)
גרסה 1.10.0-beta02
5 בנובמבר 2025
androidx.compose.runtime:runtime-*:1.10.0-beta02 מופץ. גרסה 1.10.0-beta02 מכילה את השמירות האלה.
שינויים ב-API
ביצענו כמה שינויים שלא תואמים ל-API כדי לפשט את ההתקנה והניהול של
RetainedValuesStore. השיחות הקיימות אלretainו-RetainedEffectלא יושפעו, אבל כדי ששיחות מותאמות אישית אלRetainedValuesStoreיהיו תואמות לגרסה הזו, יהיה צורך להעביר אותן. (If3c2f, b/451921682, b/450539803)
RetainedValuesStoreכבר לא חושף ממשקי API ברמה נמוכה להפעלה או להפסקה של שמירת נתונים. מצב השמירה עכשיו עוקב אחרי התוכן באופן אוטומטי. מוצעת לך עכשיו האפשרות להתקין אתLocalRetainedValuesStoreProviderRetainedValuesStore. אין לספק אתLocalRetainedValuesStoreבאופן ישיר. למידע נוסף על השינויים האלה, אפשר לעיין במסמכי התיעוד ובדוגמאות המעודכנים.השם של
RetainedValuesStoreProviderהשתנה לRetainedValuesStoreRegistry. המחלקה הזו חושפת עכשיו רק ממשקי API להתקנה ולניהול שלRetainedValuesStores בקומפוזיציה.
ControlledRetainedValuesStoreהוחלף ב-ManagedRetainedValuesStore.RetainedValuesStoreהוא עכשיו ממשק.
בעבר, התקנה של RetainedValuesStore בהתאמה אישית הייתה יכולה להיראות כך:
val retainedValuesStore = retainControlledRetainedValuesStore()
if (active) {
CompositionLocalProvider(LocalRetainedValuesStore provides retainedValuesStore) {
content()
}
val composer = currentComposer
DisposableEffect(retainedValuesStore) {
val cancellationHandle =
if (retainedValuesStore.retainExitedValuesRequestsFromSelf > 0) {
composer.scheduleFrameEndCallback {
retainedValuesStore.stopRetainingExitedValues()
}
} else {
null
}
onDispose {
cancellationHandle?.cancel()
retainedValuesStore.startRetainingExitedValues()
}
}
}
בעקבות השינויים האלה ב-API, אפשר להשתמש בקוד הבא במקום:
val retainedValuesStore = retainManagedRetainedValuesStore()
if (active) {
LocalRetainedValuesStoreProvider(retainedValuesStore) {
content()
}
}
תיקוני באגים
- העברת ביטולים של ההיקף בתוכן שניתן להעברה לפני העברת התוכן הזה מחוץ לטבלת המשבצות (I9d123, b/451651649)
גרסה 1.10.0-beta01
22 באוקטובר 2025
androidx.compose.runtime:runtime-*:1.10.0-beta01 מופץ. גרסה 1.10.0-beta01 מכילה את השמירות האלה.
שינויים ב-API
- השם של
RetainedValuesStore.getExitedValueOrDefaultהשתנה ל-RetainedValuesStore.getExitedValueOrElse(If9653, b/452340613) - השם של
isKeepingExitedValuesשונה לisRetainingExitedValues(I660bf, b/437095756) - השם של
RetainScopeהשתנה לשםRetainedValuesStore. השם שלRetainScopeHolderהשתנה לשםRetainedValuesStoreRegistry. השם שלRetainScopeHolder.RetainScopeProviderהשתנה לשםRetainedValuesStoreRegistry.ProvideChildRetainedValuesStore. (Idf23a, b/437095756)
תיקוני באגים
- הפעלה מושהית של
SavedStateב-SaveableStateRegistryעד לשימוש הראשון. (Ic0a93)
גרסה 1.10.0-alpha05
8 באוקטובר 2025
androidx.compose.runtime:runtime-*:1.10.0-alpha05 מופץ. גרסה 1.10.0-alpha05 מכילה את השמירות האלה.
תיקוני באגים
- ממלאים את דוח קריסות עבור
DiagnosticComposeExceptionבמצב הפקה. (Ib76cb) - תוקנה בעיה במצב Snapshot שבה, כשמשתמשים במדיניות מיזוג עבור סוג מסוים, יכול להיות שהערך הקודם יחושב בצורה שגויה, וכתוצאה מכך יוחזר ערך עתידי של המצב במקום הערך הקודם. זה קורה אם יש יותר משני מצבים זמניים שניתנים לשינוי בהמתנה, ולפחות אחד מהערכים שמוחלים עליהם כולל מדיניות מיזוג. (I527b5, b/442791065)
גרסה 1.10.0-alpha04
24 בספטמבר 2025
androidx.compose.runtime:runtime-*:1.10.0-alpha04 מופץ. גרסה 1.10.0-alpha04 מכילה את השמירות האלה.
שינויים ב-API
- הוספנו את
RetainScopeHolderAPI לניהול אוסף שלRetainScopes. אפשר להשתמש בזה כדי להטמיע מדיניות שמירה למאגרי תגים ולמארחי ניווט שכוללים הרבה תגי ילד עם תקופות שמירה שונות. (I10e0f) - נוספו ממשקי ה-API
RetainedContentHostו-retainControlledRetainScope, שאפשר להשתמש בהם כדי ליצורRetainScopesבניהול אוטומטי לתוכן שנעלם, כמו חלוניות שניתן לכווץ (If81f6) - הפונקציה
Updater#setהוצאה משימוש כי היא ביצעה המרה של הערך שסופק יותר מדי פעמים. נוספה העמסה שלUpdater#initשמקבלת פרמטר שמונע את הצורך ב-lambda ללכידה. (Id679e) - המאמר מציג את
RetainedEffect, API עם תופעות לוואי שדומה ל-DisposableEffect, אבל פועל לפי מחזור החיים של השמירה ולא לפי מחזור החיים של הקומפוזיציה. ממשק ה-API הזה מיועד לשימוש באפקטים שקשורים לשמירה של אובייקט אחר שלא מטמיע אתRetainObserverאו שלא יכול להטמיע אותו. (I1c61f, b/177562901) - תוקן התיעוד של
RetainObserver.onRetainedונוסףRetainObserver.onUnused, שמשקף אתRememberObserver.onAbandoned(Ia6fc5)
תיקוני באגים
- תוקן באג שגרם לשליחה של dispatching remember אחרי הקבוצה הראשונה בפונקציה (כמו קריאה של composable) ולפני קבוצה שאפשר להסיר (כמו הצהרת
if) שיכולה לשלוחonForgottenבסדר שגוי. (I453f6, b/346821372) - הימנעו ממעבר בין הקשרים של קורוטינות כשמאתחלים את
LaunchedEffect. (I8d2c3b)
גרסה 1.10.0-alpha03
10 בספטמבר 2025
androidx.compose.runtime:runtime-*:1.10.0-alpha03 מופץ. גרסה 1.10.0-alpha03 מכילה את השמירות האלה.
שינויים ב-API
- הוספנו עכשיו אפשרות ליצור עקבות מחסנית (stack traces) של קומפוזיציה שמבוססות על מפתח קבוצתי, שפועלות באפליקציות שעברו מיניפיקציה. מיפוי ה-proguard של העקבות האלה ייווצר על ידי תוסף Gradle של מהדר Compose החל מ-Kotlin 2.3.0. ההתראות האלה מושבתות כברירת מחדל. כדי להפעיל אותן, משתמשים ב-
ComposeStackTraceMode.GroupKeys. (Ifbcb5) - הוספת ממשק:
IdentifiableRecomposeScopeלכלים (Idd5e0, b/434194620) - נמנעו פסילות מיותרות בהרכבות שכוללות
CompositionLocalContext(I3fa21, b/412750209)
תיקוני באגים
- הוספנו הבהרה במסמכי התיעוד ובכלי הפיתוח שלפיה גם מפתחות שמועברים ל-retain נשמרים. מומלץ להימנע מהעברת מפתחות ל-retain שיובילו לדליפת זיכרון. (Ib553b, b/177562901)
- תוקנה בעיה שבה אם קוראים ל-
resume()של קומפוזיציה מושהית ב-thread אחר, יכול להיות שהמצב של ההתראות בהמתנה יתבלבל כש-thread ראשי מנסה להרכיב מחדש את הקומפוזיציה שניתן להשהות עבור הפריים הבא. (Ie5f17, b/442649894) - רישום חריגים שנתפסו בקומפוזיציה. (I47d78, b/432799675, b/436878515, b/359623674, b/400436355)
גרסה 1.10.0-alpha02
27 באוגוסט 2025
androidx.compose.runtime:runtime-*:1.10.0-alpha02 מופץ. גרסה 1.10.0-alpha02 מכילה את השמירות האלה.
שינויים ב-API
- נוסף
@DoNotRetain, שאפשר להשתמש בו כדי להוסיף הערות לסוגים שאסור להשתמש בהם עםretainAPI, אולי כי הם עלולים לגרום לדליפת משאבים. (Ie5435) - כדי להשתמש בפרויקטים שפורסמו עם Kotlin 2.0, צריך KGP בגרסה 2.0.0 ומעלה. (Idb6b5)
תיקוני באגים
- תיקנו תוכן שניתן להזזה כדי לחשב נכון את הפעולות ב-Applier כשהתוכן משנה את צומת הבסיס של קומפוזיציה. כשמחשבים שינויים בתוכן שאפשר להעביר, יכול להיות שקריאה ל-
up()תישאר בהמתנה ולא תישלח לממשק ההחלה, וכתוצאה מכך מצב ממשק ההחלה לא יהיה ממוקם בצורה נכונה לשימוש עתידי. (I7c583), (I47b70) - הפונקציה
CheckResultמסומנת כפונקציה שיצאה משימוש כי היא לא מיועדת לשימוש. (I32934)
גרסה 1.10.0-alpha01
13 באוגוסט 2025
androidx.compose.runtime:runtime-*:1.10.0-alpha01 מופץ. גרסה 1.10.0-alpha01 מכילה את השמירות האלה.
שינויים ב-API
- הוספנו מידע על retain API. בדומה ל-
rememberSaveable, הפונקציה retain יכולה לשמור ערכים שיוצאים מהיררכיית ההרכבה. הערכים שנשמרים לא עוברים סריאליזציה, והם תקפים לזמן קצר יותר מהערכים שנשמרים. הם מתנהגים באופן דומה ל-ViewModelשל androidx. פרטים נוספים מופיעים במסמכי התיעוד. (Ia3105, b/177562901) - נוסף
awaitOrScheduleNextCompositionEnd()API, שמפעיל קריאה חוזרת כש-Recomposer מסיים להרכיב את הפריים הנוכחי. אם הרכיב Recomposer לא יוצר כרגע פריים, ה-API הזה מושהה עד לסיום היצירה של הפריים הבא, ומתזמן יצירה של פריים חדש. (Ib873c) - הוספת API של ספק מקומי של קומפוזיציה להחזרת ערך שאינו יחידה (I22521, b/271871288)
- נוסף feature flag,
isMovableContentUsageTrackingEnabled, שמאפשר לעקוב אחרי השימוש בתוכן שאפשר להזיז כדי להימנע מתקורה מסוימת כשיוצרים את התוכן בפעם הראשונה. התכונה הזו מושבתת כרגע כברירת מחדל. (Ia713d)
תיקוני באגים
- תוקן קראש בתוכן שאפשר להזיז כשמזיזים אותו בין קומפוזיציות משנה. (I3fa1e, b/436858107)
- תוקן באג שגרם לכך שחלק מדוח קריסות של רכיב קומפוזבילי חסר כשהוא נמצא בתוך מספר קומפוזיציות משנה מקוננות. (I98c6f)
- העברת ברירת המחדל של minSdk מ-API 21 ל-API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
- תוקנה בעיית מרוץ תהליכים כשסטטוס פנימי של קומפוזיציה שאפשר להשהות עודכן מכמה שרשורים. (I03895)
- העדכון של רכיב ה-observer של רישום הקומפוזיציה יופעל לפני הקומפוזיציה הראשונית. (I4adca, b/430600932)
- ביצענו תיקון באג קל כדי להפוך את
AutoboxingStateValuePropertyDetectorלתואם גם ל-K1 וגם ל-K2. (Ie81c1)
External Contribution
- הופכים את ארטיפקט runtime-rxjava2 לפלטפורמה מרובה ומוסיפים את JVM כיעד נתמך. (I5409e)
- הופכים את ארטיפקט runtime-rxjava3 לפלטפורמה מרובת יעדים ומוסיפים את JVM כיעד נתמך. (I97e84)
גרסה 1.9
גרסה 1.9.5
19 בנובמבר 2025
androidx.compose.runtime:runtime-*:1.9.5 מופץ. גרסה 1.9.5 מכילה את השמירות האלה.
תיקוני באגים
- העברת ביטולי תוקף של ההיקף בתוכן שניתן להעברה לפני העברת התוכן הזה מחוץ לטבלת המשבצות (I9d123, b/451651649)
גרסה 1.9.4
22 באוקטובר 2025
androidx.compose.runtime:runtime-*:1.9.4 מופץ. גרסה 1.9.4 מכילה את השמירות האלה.
גרסה 1.9.3
8 באוקטובר 2025
androidx.compose.runtime:runtime-*:1.9.3 מופץ. גרסה 1.9.3 מכילה את השמירות האלה.
גרסה 1.9.2
24 בספטמבר 2025
androidx.compose.runtime:runtime-*:1.9.2 מופץ. גרסה 1.9.2 מכילה את השמירות האלה.
גרסה 1.9.1
10 בספטמבר 2025
androidx.compose.runtime:runtime-*:1.9.1 מופץ. גרסה 1.9.1 מכילה את השמירות האלה.
תיקוני באגים
- אל תערכו מחדש יצירות שנמצאות בתהליך יצירה. (Iacb01)
- למנוע מצב שבו היקפי ההגדרה מחדש מושהים פעמיים. (I060b2, b/431584881)
גרסה 1.9.0
13 באוגוסט 2025
androidx.compose.runtime:runtime-*:1.9.0 מופץ. גרסה 1.9.0 מכילה את השמירות האלה.
שינויים חשובים מאז גרסה 1.8.0
- בדיקות ה-Lint שנשלחות עם Compose דורשות עכשיו גרסת AGP מינימלית של 8.8.2. אם אין לכם אפשרות לשדרג את AGP, אתם יכולים לשדרג את Lint בנפרד באמצעות
android.experimental.lint.version=8.8.2(או גרסה חדשה יותר) בקובץ gradle.properties. כדי להריץ בדיקות של Compose lint בתוך סביבת הפיתוח המשולבת (IDE), צריך להשתמש ב-Android Studio Ladybug או בגרסה חדשה יותר. - נוצרה ספרייה חדשה של הערות בזמן ריצה. הספרייה מכילה הגדרות של הערות בלי תלות בזמן הריצה של Compose, כך שאפשר להשתמש בה ממודולים שאינם Compose.
- האפליקציות
@Stable,@Immutableו-@StableMarkerהועברו ל-runtime-annotation, כדי לאפשר הוספת הערות למודולים שאינם Compose - ההערות
@FrequentlyChangingValueו-@RememberInCompositionנוספו ל-runtime-annotation. הסימן@FrequentlyChangingValueמציין הצהרות שעלולות לגרום להרכבה מחדש לעיתים קרובות, והסימן@RememberInCompositionמציין הצהרות שכדאי לזכור בהרכבה. בדיקות ה-lint המתאימות מציגות אזהרה לגבי שימוש לא נכון.
- האפליקציות
- מעכשיו תהיה תמיכה בפלטפורמות נוספות ב-
androidx.compose.runtime:runtime. התמיכה ביעדים של מחשבים, iOS ופלטפורמות מקומיות הועברה מפרויקט Compose Multiplatform של JetBrains, ותפורסם דרך Google Maven בהמשך. אין השפעה על פריטי מידע אחרים של Compose.
גרסה 1.9.0-rc01
30 ביולי 2025
androidx.compose.runtime:runtime-*:1.9.0-rc01 מופץ. גרסה 1.9.0-rc01 מכילה את השמירות האלה.
תיקוני באגים
- העדכון של רכיב ה-observer של רישום היצירה המוזיקלית יתבצע לפני היצירה הראשונית. (I4adca, b/430600932)
גרסה 1.9.0-beta03
16 ביולי 2025
androidx.compose.runtime:runtime-*:1.9.0-beta03 מופץ. גרסה 1.9.0-beta03 מכילה את השמירות האלה.
גרסה 1.9.0-beta02
2 ביולי 2025
androidx.compose.runtime:runtime-*:1.9.0-beta02 מופץ. גרסה 1.9.0-beta02 מכילה את השמירות האלה.
תיקוני באגים
- הקטנו את משך החיים של ההפניה לערכים בטבלת המשבצות בין קומפוזיציות. יש מקרים שבהם הפניה בטבלת המשבצות יכולה להימשך פריים אחד יותר מהנדרש. (I49e74, b/418516940)
- הסרת שינוי השם של Kotlin לשיטות של Hot Reload. (Ic56a3, b/426871325)
גרסה 1.9.0-beta01
18 ביוני 2025
androidx.compose.runtime:runtime-*:1.9.0-beta01 מופץ. גרסה 1.9.0-beta01 מכילה את השמירות האלה.
שינויים ב-API
- נוסף API של כלי לניתוח מידע על מקור שנוסף על ידי מהדר Compose. (Iceaf9, b/408492167)
-
SnapshotStateSetמטמיע עכשיו אתParcelableב-Android, ולכן אפשר להשתמש בו כחלק מ-rememberSaveable { ... }. (I755dd, b/378623803) -
SnapshotStateListמטמיע עכשיו אתParcelableב-Android, ולכן אפשר להשתמש בו כחלק מ-rememberSaveable { ... }. (Id18be, b/378623803) -
movableContentOf()מסומן עכשיו בהערה@RememberInComposition, שמאפשרת ל-lint לזהות שימושים שגויים (I2738d) - עדכון של ה-API הניסיוני של רכיבי Composition Observer כדי לאפשר תצפית מקיפה יותר על הגורמים לרה-קומפוזיציה (I32b6a)
- כדי להתכונן לפיתוח עתידי של התכונה הזו, צריך לשנות את הערך
setDiagnosticStackTraceEnabledל-experimental. (I11db3) - התכונה
currentCompositeKeyHashהוצאה משימוש. במקומה צריך להשתמש במדיניותcurrentCompositeKeyHashCode. ממשק ה-API החלופי מקודד את אותו הגיבוב עם יותר ביטים, מה שמקטין באופן משמעותי את הסיכוי שלשתי קבוצות אקראיות לא קשורות בהיררכיית הקומפוזיציה יהיה אותו מפתח גיבוב. (I4cb6a, b/177562901) - כדי להשתמש בפרויקטים שפורסמו עם Kotlin 2.0, צריך KGP 2.0.0 או גרסה חדשה יותר (Idb6b5)
- האפליקציות
@Stable,@Immutableו-@StableMarkerהועברו ל-runtime-annotation (באופן תואם). עכשיו אפשר להסתמך על runtime-annotation אם רוצים להשתמש באנוטציות האלה מספרייה שלא מסתמכת על Compose. (I23a16) - השם של הפונקציה
rememberSaveableשמועמסת יתר על המידה ומשתמשת ב-KSerializerשונה ל-rememberSerializable. השינוי הזה מבהיר את השימוש המיועד ב-kotlinx.serialization. כדי לתמוך במחלקות כלליות שלkotlinx.Serializableישירות ב-rememberSaveable, נדרש פרמטר מסוגreified, שיגרום לבעיות תאימות למקור כי הוא ידרוש מכל אתרי הקריאות לספק מידע על סוגים מוחשיים בזמן ההידור. (Idb875, I38627, b/376028110)
תיקוני באגים
- צריך להשמיד קומפוזיציות שהוגדרו עם תוכן שאפשר להשהות ושבוטל. הבדיקה הזו מתבצעת עכשיו על ידי הקומפוזיציה, ואם נעשה בה שימוש חוזר, המערכת תקפיץ הודעת שגיאה. (I2daa5, b/406792785)
- תוקן באפשרות 'קומפוזיציה שניתן להשהות' כך שהיא לא תשלח יותר
onForgottenמזויף כדי לזכור צופים כשהיא מושמדת. אםRememberObserversנמצא בהרכב שאפשר להשהות ושההרכב בוטל, צריך לשלוח לו רק onAbandoned. (I26f54) - תוקנה בעיה בתוכן שאפשר להזיז, שבה פסילות שמגיעות בשלבים מאוחרים של עיבוד תוכן שאפשר להזיז מתווספות לרכיב הקומפוזיציה, אבל הפסילות האלה לא מתעדכנות כשהתוכן מוזז, ולכן התוכן עובר קומפוזיציה מחדש במקום הלא נכון. (Icd2fa, b/409439507)
- תוקנה בעיה שגרמה לביטול התוקף של תוכן שאפשר להעביר אחרי שהוא נוצר אבל לפני שהוא הועבר. (I99eac, b/229001114)
- קריאה ל-
remove()של איטרטור רשימה שנוצר על ידיSnapshotStateListאחרי קריאה ל-previous()עלולה להסיר את הרכיב הלא נכון מהרשימה, ולא תואמת למה ש-ArrayListעושה עבור אותה רצף של קריאות. (I05ab7, b/417493222) - תוקנה בעיה בסדר השליחה של
onForgotton, שיכולה לגרום, למשל, להפעלה שלonDisposeשל אפקטים חד-פעמיים בסדר שגוי. (Ic1c91, b/417450712) - תיקון לשימוש חוזר בטיפול במצבים בקומפוזיציה שאפשר להשהות (Ife96e, b/404058957)
- תוקן באג שקשור לשימוש חוזר במצב כשקומפוזיציה הושהתה והופעלה מחדש, אבל היה צורך להרכיב מחדש מצב שהושהה קודם לכן כי מצב מסוים שהיא קראה השתנה בזמן שהקומפוזיציה הושהתה. (I441d1, b/416209738)
- הושלם התיקון של הבעיה b/404058957 בנוגע לשיגור של קומפוזיציה שאפשר להשהות. התיקון הקודם היה חלקי. (I1afd4, b/404058957)
-
OffsetApplierמחליף עכשיו בצורה נכונה אתapply()שהוצג עם האפשרות להשהות יצירה. אם לא תגדירו את זה, יכול להיות שעדכון של צמתים וירטואליים יגרום להרכבה שניתנת להשהיה להקפיץ הודעת שגיאה. (Idbf31, b/409291131) - תוקן מצב של קיפאון שיכול להשפיע על משתמשי Molecule כששיחה מושעית ל-
FrameClock.withFrameNanosמבוטלת בזמן שפריים נשלח. (I89cab, b/407027032) - יכול להיות שהכלי ליצירת קומפוזיציה מחדש יהיה בלי פעילות עם תוכן שאפשר להזיז (Ie5416, b/409267170)
- הסדר שבו
onReuseו-onDeactivateיכולים להתהפך במהלך קומפוזיציה שניתן להשהות. הן מתרחשות עכשיו בוודאות לפי הסדרonDeactivate/onReuse. (I996e4, b/404058957) - תיקון השליחה של observers שזוכרים בהרכב שניתן להשהיה כדי למנוע שליחה של remembered/forgotten באותו apply (I570b2, b/404645679, b/407931790)
- החלפנו את
LifecycleRegistryלמצב לא בטוח ב-Compose Multiplatform כדי להשבית את הבדיקות שלMainThreadולתקן בעיות שקשורות לשרשורים. פרטים נוספים זמינים במאמר CMP-8227. (Icee87)
External Contribution
- תוקן באג שמשפיע על משתמשי Molecule, שבו שימוש ב-
RecompositionMode.Immediateעלול לגרום להחמצת קומפוזיציות מחדש. (I9f3a9, b/419527812) - הוספנו פונקציות getter של
PausableCompositionisAppliedו-isCancelledשמאפשרות לבדוק את המצב שלPausableComposition. (I994aa) - ההערה
AnnotationTarget.FUNCTIONנוספה להערהFunctionKeyMeta. (I08021)
גרסה 1.9.0-alpha04
4 ביוני 2025
androidx.compose.runtime:runtime-*:1.9.0-alpha04 מופץ. גרסה 1.9.0-alpha04 מכילה את השמירות האלה.
שינויים ב-API
-
SnapshotStateSetכולל עכשיו Parcelable ב-Android, ולכן אפשר להשתמש בו כחלק מ-rememberSaveable { ... }. (I755dd, b/378623803) -
SnapshotStateListכולל עכשיו הטמעה של Parcelable ב-Android, ולכן יש תמיכה בשימוש בו כחלק מ-rememberSaveable { ... }. (Id18be, b/378623803) -
movableContentOf()מסומן עכשיו בהערה@RememberInComposition, שמאפשרת ל-lint לזהות שימושים שגויים (I2738d) - עדכון של ה-API הניסיוני של רכיבי Composition Observer כדי לאפשר תצפית מקיפה יותר על הגורמים לרה-קומפוזיציה (I32b6a)
תיקוני באגים
- תוקנה בעיה בסדר השליחה של
onForgotton, שיכולה לגרום, למשל, להפעלה שלonDisposeשל אפקטים חד-פעמיים בסדר שגוי. (Ic1c91, b/417450712) - תיקון לשימוש חוזר בטיפול במצבים בקומפוזיציה שאפשר להשהות (Ife96e, b/404058957)
- תיקון באג קטן כדי להפוך את זיהוי אוסף הנתונים שניתן לשינוי לתואם ל-K1 ול-K2 (Ie4878)
- תיקון באג קל שנועד להפוך את החיפוש של הערות בשיטות גישה שהוחלפו לנכסים לתואם גם ל-K1 וגם ל-K2 (I9900d)
External Contribution
- תוקן באג שמשפיע על משתמשי Molecule, שבו שימוש ב-
RecompositionMode.Immediateעלול לגרום להחמצת קומפוזיציות מחדש. (I9f3a9, b/419527812) - הוספנו getters של
PausableCompositionisApplied ו-isCancelledשמאפשרים לבדוק את המצב שלPausableComposition. (I994aa)
גרסה 1.9.0-alpha03
20 במאי 2025
androidx.compose.runtime:runtime-*:1.9.0-alpha03 מופץ. גרסה 1.9.0-alpha03 מכילה את השמירות האלה.
שינויים ב-API
- כדי להתכונן לפיתוח עתידי של התכונה הזו, צריך לשנות את הערך
setDiagnosticStackTraceEnabledל-experimental. (I11db3)
תיקוני באגים
- תוקן באג שקשור לשימוש חוזר במצב כשקומפוזיציה הושהתה והופעלה מחדש, אבל היה צורך להרכיב מחדש מצב שהושהה קודם לכן כי מצב מסוים שהיא קראה השתנה בזמן שהקומפוזיציה הושהתה. (I441d1, b/416209738)
- הושלם התיקון של שליחת הזיכרון של ההרכבה שניתן להשהות לבעיה b/404058957. התיקון הקודם היה חלקי. (I1afd4, b/404058957)
-
SaveableStateHolder.SaveableStateProviderמספק עכשיוLocalSavedStateRegistryOwnerלתוכן שלו באמצעות קומפוזיציה. (Ia2761, b/413108878) -
androidx.compose.runtime.saveableתלוי עכשיו ב-androidx.lifecycle.runtime.compose. (I53228, b/413108878)
גרסה 1.9.0-alpha02
7 במאי 2025
androidx.compose.runtime:runtime-*:1.9.0-alpha02 מופץ. גרסה 1.9.0-alpha02 מכילה את השמירות האלה.
שינויים ב-API
- הוצא משימוש
rememberSaveableעם 'מפתח' מותאם אישית. הוא עוקף את הגדרת ההיקף לפי מיקום, ומוביל לבאגים במצב ולתנהגות לא עקבית (למשל, שיתוף או אובדן מצב לא מכוון, בעיות ב-LazyLayoutsמקונן). כדי להשתמש בהגדרת היקף לפי מיקום למצב עקבי עם היקף מקומי, צריך להסיר את הפרמטר 'key'. פרטים נוספים זמינים בהודעת ה-commit המלאה. (I5e6ff, b/357685851)
תיקוני באגים
- התג
OffsetApplierמחליף עכשיו בצורה נכונה את התגapply(), שהוצג עם האפשרות להשהות את ההרכבה. אם לא תהיה לכם האפשרות הזו, יכול להיות שעדכון של צמתים וירטואליים יגרום לקומפוזיציה שניתן להשהות להקפיץ הודעת שגיאה (throw) כשהיא מעדכנת צמתים וירטואליים. (Idbf31, b/409291131) - תוקן מצב של קיפאון שיכול להשפיע על משתמשי Molecule כששיחה מושעית ל-
FrameClock.withFrameNanosמבוטלת בזמן שפריים נשלח. (I89cab, b/407027032) - יכול להיות שהרכיב Recomposer יישאר במצב בלי פעילות עם תוכן שניתן להזזה, עד שיוסר. בדרך כלל זה לא קורה כי מצב התוכן הניתן להזזה נמחק בלולאה הראשית של Recomposer. עם זאת, זה יכול לקרות בקומפוזיציה שניתן להשהות כשמבטלים את התוכן הניתן להזזה במהלך
resume()(Ie5416, b/409267170) - הסדר שבו
onReuseו-onDeactivateיכולים להתהפך במהלך קומפוזיציה שניתן להשהות. עכשיו מובטח שהם יתרחשו לפי הסדרonDeactivate/onReuse. (I996e4, b/404058957)
גרסה 1.9.0-alpha01
23 באפריל 2025
androidx.compose.runtime:runtime-*:1.9.0-alpha01 מופץ. גרסה 1.9.0-alpha01 מכילה את השמירות האלה.
שינויים בהתנהגות
- בדיקות ה-Lint שנשלחות עם Compose דורשות עכשיו גרסת AGP מינימלית של 8.8.2. אם אין לכם אפשרות לשדרג את AGP, אתם יכולים לשדרג את Lint בנפרד באמצעות
android.experimental.lint.version=8.8.2(או גרסה חדשה יותר) בקובץgradle.properties. כדי להריץ בדיקות של Compose lint בתוך סביבת הפיתוח המשולבת (IDE), צריך להשתמש ב-Android Studio Ladybug או בגרסה חדשה יותר.
שינויים ב-API
- התכונה
currentCompositeKeyHashהוצאה משימוש. במקומה צריך להשתמש במדיניותcurrentCompositeKeyHashCode. ממשק ה-API החלופי מקודד את אותו הגיבוב עם יותר ביטים, מה שמקטין באופן משמעותי את הסיכוי שלשתי קבוצות אקראיות לא קשורות בהיררכיית הקומפוזיציה יהיה אותו מפתח גיבוב. (I4cb6a, b/177562901) - כדי להשתמש בפרויקטים שפורסמו עם Kotlin 2.0, צריך KGP 2.0.0 או גרסה חדשה יותר (Idb6b5)
- האפליקציות
@Stable,@Immutableו-@StableMarkerהועברו ל-runtime-annotation (באופן תואם). עכשיו אפשר להסתמך על runtime-annotation אם רוצים להשתמש באנוטציות האלה מספרייה שלא מסתמכת על Compose. (I23a16) - הפונקציות
onCreatingו-onDisposingהוסרו כי הן הוצאו משימוש ושמן שונה ל-onPreCreateו-onPreDispose. השינוי הזה משלים את שינוי השם. (I97461) - חשיפת קומפוזיציה מקומית שמאפשרת לצרף מעקב אחר מחסנית (stack trace) של קומפוזיציה על סמך מיקום של צומת קומפוזיציה בקומפוזיציה. (Ie0bda, b/354163858)
- הוספנו אבחון של עקבות מחסנית של Compose על סמך פרטי המקור שמאוחסנים בקומפוזיציה. (I3db9f, b/354163858)
- הוצאנו משימוש את
runWithTimingDisabledלטובתrunWithMeasurementDisabled, שמתאר בצורה ברורה יותר את ההתנהגות – כל המדדים מושהים. בנוסף, צריך לחשוף את מחלקת העלMicrobenchmarkScopeכי אי אפשר להצהיר מחדש על הפונקציהrunWithMeasurementDisabledכדי לפתוח את הגישה, כי היא מוטמעת. (I9e23b, b/389149423, b/149979716) - הוספת
@FrequentlyChangingValue: הערה שיכולה לסמן פונקציות ושיטות לקבלת מאפיינים, כדי לציין שאסור לקרוא להן ישירות בתוך קומפוזיציה, כי זה עלול לגרום לקומפוזיציות חוזרות לעיתים קרובות. לדוגמה, כדי לסמן ערכים של מיקום גלילה וערכים של אנימציה. האזהרות מסופקות על ידי בדיקת lint מתאימה. (I83630, b/234042500) - הוספה של
@RememberInComposition: הערה שיכולה לסמן בנאים, פונקציות ושיטות גישה למאפיינים, כדי לציין שאסור לקרוא להם ישירות בתוך קומפוזיציה, בלי לזכור אותם. השגיאות יופיעו בבדיקת ה-lint המתאימה. אפשר להשתמש בהערה הזו כדי לסמן הצהרות שמחזירות אובייקטים עם מצב או אובייקטים שניתנים לשינוי, אובייקטים שהזהות שלהם חשובה לשמירה בין קומפוזיציות, או אובייקטים שדורשים הרבה משאבים ליצירת מופע וצריך לשמור אותם במטמון בין קומפוזיציות. (Ie7db0) - נוספה
rememberSaveableעומס יתר חדש שתומך ב-KSerializerלשמירת מצב בטוח באמצעות KotlinX Serialization. ממשק ה-API הקיים שמבוסס עלSaverעדיין נתמך. (Iea4ab, b/376028110)
תיקוני באגים
- תיקון השליחה של observers שזוכרים בהרכב שניתן להשהיה כדי למנוע שליחה של remembered/forgotten באותו apply (I570b2, b/404645679, b/407931790)
- שינינו את השם של שיטות
SnapshotObserveronCreating ל-onPreCreateושלonDisposingל-onPreDisposeכדי להתאים להנחיות בנושא API. השיטות הקודמות הוצאו משימוש, והשיטות החדשות מוגדרות כברירת מחדל להפעלת השיטות הישנות, כך שהטמעות קיימות של הממשק הזה ימשיכו לפעול עד שהשיטות יוסרו. ה-methods האלה יוסרו בגרסה 1.9.0 אלפא בשינוי קוד שיגיע בקרוב. הם יוסרו מגרסת בטא 1.8 לפני גרסה יציבה 1.8. (I6d753) - תוקנה בעיה שבה ערכים שנשמרו נשכחו בטעות וחושבו מחדש כשנוצרה מחדש קבוצה שהושמטה והופיעה אחרי קבוצה שאפשר להזיז (I62cab, b/383769314)
- נוספה תמיכה בהרכבת עקבות מחסנית ב-
LaunchedEffectוב-rememberCoroutineScope(I705c0, b/354163858) - כדי להריץ בדיקות lint ב-Compose, צריך עכשיו גרסת AGP מינימלית של 8.8.2 משורת הפקודה, ולפחות Android Studio Ladybug לתמיכה ב-IDE. אם אתם משתמשים בגרסה ישנה יותר של AGP, אתם יכולים להגדיר את
android.experimental.lint.version=8.8.2בקובץ gradle.properties כדי לשדרג את גרסת ה-Lint בלי להשפיע על AGP. (I6f2a8)
External Contribution
- ההערה
AnnotationTarget.FUNCTIONנוספה להערהFunctionKeyMeta. (I08021)
גרסה 1.8
גרסה 1.8.3
18 ביוני 2025
androidx.compose.runtime:runtime-*:1.8.3 מופץ. גרסה 1.8.3 מכילה את השמירות האלה.
גרסה 1.8.2
20 במאי 2025
androidx.compose.runtime:runtime-*:1.8.2 מופץ. גרסה 1.8.2 מכילה את השמירות האלה.
גרסה 1.8.1
7 במאי 2025
androidx.compose.runtime:runtime-*:1.8.1 מופץ. גרסה 1.8.1 מכילה את השמירות האלה.
גרסה 1.8.0
23 באפריל 2025
androidx.compose.runtime:runtime-*:1.8.0 מופץ. גרסה 1.8.0 מכילה את השמירות האלה.
גרסה 1.8.0-rc03
9 באפריל 2025
androidx.compose.runtime:runtime-*:1.8.0-rc03 מופץ. גרסה 1.8.0-rc03 מכילה את השמירות האלה.
גרסה 1.8.0-rc02
26 במרץ 2025
androidx.compose.runtime:runtime-*:1.8.0-rc02 מופץ. גרסה 1.8.0-rc02 מכילה את השמירות האלה.
גרסה 1.8.0-rc01
12 במרץ 2025
androidx.compose.runtime:runtime-*:1.8.0-rc01 מופץ. גרסה 1.8.0-rc01 מכילה את השמירות האלה.
שינויים ב-API
- שינינו את השם של שיטות
SnapshotObserveronCreating ל-onPreCreateושלonDisposingל-onPreDisposeכדי להתאים להנחיות בנושא API. השיטות הקודמות הוצאו משימוש, והשיטות החדשות מוגדרות כברירת מחדל להפעלת השיטות הישנות, כך שהטמעות קיימות של הממשק הזה ימשיכו לפעול עד שהשיטות יוסרו. ה-methods האלה יוסרו בגרסה 1.9.0 אלפא בשינוי קוד שיגיע בקרוב. הם יוסרו מגרסת בטא 1.8 לפני גרסה יציבה 1.8. (I6d753)
גרסה 1.8.0-beta03
26 בפברואר 2025
androidx.compose.runtime:runtime-*:1.8.0-beta03 מופץ. גרסה 1.8.0-beta03 מכילה את השמירות האלה.
גרסה 1.8.0-beta02
12 בפברואר 2025
androidx.compose.runtime:runtime-*:1.8.0-beta02 מופץ. גרסה 1.8.0-beta02 מכילה את השמירות האלה.
תיקוני באגים
- הקפצת הודעת שגיאה (throw) לחריגה שנתפסה בקומפוזיציה שאפשר להשהות .(384486d)
גרסה 1.8.0-beta01
29 בינואר 2025
androidx.compose.runtime:runtime-*:1.8.0-beta01 מופץ. גרסה 1.8.0-beta01 מכילה את השמירות האלה.
שינויים ב-API
- תוקנה בעיה שבה העלאה של throwable במהלך יצירה שלא מורחבת מ-Exception עלולה לגרום לשגיאה 'היצירה בהמתנה לא הוחלה'. (I356be, b/382094412)
גרסה 1.8.0-alpha08
15 בינואר 2025
androidx.compose.runtime:runtime-*:1.8.0-alpha08 מופץ. גרסה 1.8.0-alpha08 מכילה את השמירות האלה.
גרסה 1.8.0-alpha07
11 בדצמבר 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha07 מופץ. גרסה 1.8.0-alpha07 מכילה את השמירות האלה.
שינויים ב-API
- נוסף API של כלי עזר שעוזר לכלי לבדיקת פריסות לקשר בין קומפוזיציות משנה לקומפוזיציית האב במקרים שבהם צומת לא משמש לגישור בין הקומפוזיציות. (I4ce3d)
- הפכנו את הקבועים האריתמטיים והמיוחדים של
SnapshotIdלפנימיים במקום לציבוריים. אם צריך, אפשר לבצע פעולות אריתמטיות עלSnasphotIdעל ידי המרה שלו ל-Intאו ל-LongבאמצעותtoInt()אוtoLong()בהתאמה. (Ic3a57)
External Contribution
- אופטימיזציה של האחסון לפרמטרים
movableContentOf. (ed87177)
גרסה 1.8.0-alpha06
13 בנובמבר 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha06 מופץ. גרסה 1.8.0-alpha06 מכילה את השמירות האלה.
שינויים ב-API
- שינויים ב-
PausableCompositionAPI. אלה שינויים שגורמים לשבירת תאימות בהשוואה לגרסאות קודמות של 1.8.0-alpha (מאז 1.8.0-alpha02), אבל מכיוון שאלה ממשקי API חדשים בגרסה 1.8.0, לא נשמרת תאימות לאחור כי ממשקי ה-API עדיין בגרסת אלפא. (I39819) - נוספו ממשקי API של כלי תצפית ליצירת קומפוזיציות חדשות ב-Recomposer (Iaeb7e)
- הוספנו את
snapshotId, מסוגLong, אלSnapshotוהוצאנו משימוש אתid. המזהה של תמונת מצב השתנה מ-Intל-Longכדי למנוע גלישה של מזהה תמונת המצב במערכות עם קצב פריימים גבוה מאוד ואנימציות ארוכות. הסוג הוגדר כצפוי/בפועל כדי לאפשר לסוג הזה להיותInt, או סוג אחר, בפלטפורמות שאין בהן סוגLongמקורי. בפלטפורמות שאין להןLongמקורי, כמו JavaScript, מומלץ להימנע מקצב פריימים גבוה (מעל 1,000 FPS) כי הוא עלול לגרום לגלישה שלIntכל 24 ימים בערך. (I38ac3, b/374821679)
תיקוני באגים
- הבעיה ב
providesDefaultנפתרה עבורprovidesאחד. (aosp/3318540 b/374263387) - אופטימיזציה של
ChangeList. (3318538)
גרסה 1.8.0-alpha05
30 באוקטובר 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha05 מופץ. גרסה 1.8.0-alpha05 מכילה את השמירות האלה.
תיקוני באגים
- תיקון גלישת מחסנית על ידי הוספת
Int.MAX_VALUEאלSnapshotIdSet. (b/370536104, Ic4179f6) - מיקרו-אופטימיזציות בזמן ריצה (I50c60)
- מאפשרים ל-R8 להסיר קריאות של runtimeCheck לניפוי באגים (I8c44)
- הפיכת
compoundKeyOfלאיטרטיבי במקום לרקורסיבי (I5817f)
External Contribution
- הטמעה של ערימות עם רשימות אוספים (I7d47c)
גרסה 1.8.0-alpha04
16 באוקטובר 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha04 מופץ. גרסה 1.8.0-alpha04 מכילה את השמירות האלה.
שיפורים בביצועים
- הוספת מזהה של snapshot לרשומות של מצב ב-constructor (85c00f)
- שינוי מבנה הקוד
SnapshotState***כדי למנוע שגיאות באימות המחלקה (6ee4a6) - תיקון כללי R8 כדי למנוע הטמעה של throw (5beb92)
- אופטימיזציה של פעולות ברמת המיקרו (d73c5c)
- אופטימיזציה
SynchronizedObjectשל הקצאות ב-JVM (2b043f)
גרסה 1.8.0-alpha03
2 באוקטובר 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha03 מופץ. גרסה 1.8.0-alpha03 מכילה את השמירות האלה.
שיפורים בביצועים
- יצירת הקשר של צאצא באופן עצלני עבור
rememberCoroutineScope(f61464)- הפונקציה
rememberCoroutineScopeמשמשת בדרך כלל להפעלת קורוטינות בתגובה לאירועים שמתרחשים אחרי ההרכבה. במקרים מסוימים, יכול להיות שהאירועים האלה לא יתרחשו אף פעם, מה שיוביל לעלויות נוספות של יצירת משימות וביטולן בלי שתהיה לכך תועלת. - הגדרת ההיקף שמוחזר על ידי
rememberCoroutineScopeיוצרת אתcoroutineContextבאופן עצלני כשניגשים אליו, וכך נמנעת יצירה וביטול של משימות אם לא נעשה שימוש בהיקף.
- הפונקציה
גרסה 1.8.0-alpha02
18 בספטמבר 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha02 מופץ. גרסה 1.8.0-alpha02 מכילה את השמירות האלה.
תכונות חדשות
- נוספה האפשרות
PausableCompositionליצירת קומפוזיציה משנית שאפשר להשהות במהלך הקומפוזיציה ולהחיל אותה באופן אסינכרוני על הקומפוזיציה. כדי להשהות את התהליך, שכרגע נמצא בפיתוח, צריך תמיכה בקומפיילר. (I3394b)
גרסה 1.8.0-alpha01
4 בספטמבר 2024
androidx.compose.runtime:runtime-*:1.8.0-alpha01 מופץ. גרסה 1.8.0-alpha01 מכילה את השמירות האלה.
גרסה 1.7
גרסה 1.7.8
12 בפברואר 2025
androidx.compose.runtime:runtime-*:1.7.8 מופץ. גרסה 1.7.8 מכילה את השמירות האלה.
גרסה 1.7.7
29 בינואר 2025
androidx.compose.runtime:runtime-*:1.7.7 מופץ. אין שינויים מגרסה 1.7.6.
androidx.compose.runtime:runtime-*:1.7.6 מופץ. גרסה 1.7.6 מכילה את השמירות האלה.
גרסה 1.7.5
30 באוקטובר 2024
androidx.compose.runtime:runtime-*:1.7.5 מופץ. גרסה 1.7.5 מכילה את השמירות האלה.
גרסה 1.7.4
16 באוקטובר 2024
androidx.compose.runtime:runtime-*:1.7.4 מופץ. גרסה 1.7.4 מכילה את השמירות האלה.
גרסה 1.7.3
2 באוקטובר 2024
androidx.compose.runtime:runtime-*:1.7.3 מופץ. גרסה 1.7.3 מכילה את השמירות האלה.
גרסה 1.7.2
18 בספטמבר 2024
androidx.compose.runtime:runtime-*:1.7.2 מופץ. גרסה 1.7.2 מכילה את השמירות האלה.
גרסה 1.7.1
10 בספטמבר 2024
- לא בוצעו שינויים בפריטי מידע של Android.
-desktopארטיפקטים הוסרו ו--jvmStubsו--linuxx64Stubsארטיפקטים נוספו. אף אחד מהיעדים האלה לא מיועד לשימוש, הם משמשים כ-placeholder כדי לתמוך במאמצי Jetbrains Compose.
גרסה 1.7.0
4 בספטמבר 2024
androidx.compose.runtime:runtime-*:1.7.0 מופץ. גרסה 1.7.0 מכילה את השמירות האלה.
שינויים חשובים מאז גרסה 1.6.0
- נוספה האפשרות לספק לוקאל של קומפוזיציה שמחושב על סמך הערכים של לוקאלים אחרים של קומפוזיציה, כברירת מחדל, באמצעות
compositionLocalWithComputedDefault()או באמצעות אספקת ביטוי למדה לחישוב הערך באמצעותprovidesComputedבמקוםprovides. - אפשר לקבל את הערך של קומפוזיציה מקומית באמצעות המאפיין
currentValueשל הקומפוזיציה המקומית שאפשר לגשת אליה מתוך ה-lambda שמחשב את הערך. האפשרות הזו משמשת במקוםcurrent, שאפשר לגשת אליה רק בפונקציות@Composable. (Iadbc0) - אפשר לגשת מיד לאובייקטים של מצב שנוצרו לאחרונה מתוך תמונות מצב אחרות, כולל תמונת המצב הגלובלית, עם המצב ההתחלתי שלהם. שינויים נוספים לא יהיו גלויים עד שהתמונה של מצב האובייקט בזמן היצירה שלו תוחל.
- המצב הראשוני של
mutableStateOf(), וגם של הגרסאות הפרימיטיביות שלו, הוא הערך שמועבר כפרמטר אלmutableStateOf(). המצב ההתחלתי שלmutableStateListOf()ושלmutableStateMapOf()הוא ריק. - נוספו
Snapshot.isInSnapshotו-Snapshot.PreexistingSnapshotIdשמשמשים להפעלה של אובייקט מצב כדי שיהיה נגיש באופן מיידי מה-snapshot הגלובלי עם היצירה שלו. - אובייקטים של מצב מותאם אישית יכולים לתמוך בגישה מיידית אם פועלים לפי דפוס השינויים שבוצעו באובייקטים המובנים של התמונה. (I84a17)
- הפעלת
nonSkippingGroupOptimizationבספריות של כתיבת מוזיקה. כתוצאה מכך, הקוד שנוצר לכל הפונקציות הניתנות להרכבה שאי אפשר להפעיל מחדש ב-androidx יהיה יעיל יותר. אנחנו מתכננים להפעיל את ההגדרה הזו כברירת מחדל בעתיד. I(acbc08) - ביטול תוקף של ביטויי למדה שאפשר להרכיב בהרכבות משנה באותו פריים. (98301c)
- הפונקציה
onReleasecallback נקראת באותו סדר כמוonForgotten. (2cd790) - הפעלת מצב דילוג חזק (ed1766)
- שיפורים בייחודיות של
currentCompoundHashKeyבמקרים נוספים (d4a872)
גרסה 1.7.0-rc01
21 באוגוסט 2024
androidx.compose.runtime:runtime-*:1.7.0-rc01 מופץ. גרסה 1.7.0-rc01 מכילה את השמירות האלה.
גרסה 1.7.0-beta07
7 באוגוסט 2024
androidx.compose.runtime:runtime-*:1.7.0-beta07 מופץ. גרסה 1.7.0-beta07 מכילה את השמירות האלה.
גרסה 1.7.0-beta06
24 ביולי 2024
androidx.compose.runtime:runtime-*:1.7.0-beta06 מופץ. גרסה 1.7.0-beta06 מכילה את השמירות האלה.
גרסה 1.7.0-beta05
10 ביולי 2024
androidx.compose.runtime:runtime-*:1.7.0-beta05 מופץ. גרסה 1.7.0-beta05 מכילה את השמירות האלה.
גרסה 1.7.0-beta04
26 ביוני 2024
androidx.compose.runtime:runtime-*:1.7.0-beta04 מופץ. גרסה 1.7.0-beta04 מכילה את השמירות האלה.
גרסה 1.7.0-beta03
12 ביוני 2024
androidx.compose.runtime:runtime-*:1.7.0-beta03 מופץ. גרסה 1.7.0-beta03 מכילה את השמירות האלה.
גרסה 1.7.0-beta02
29 במאי 2024
androidx.compose.runtime:runtime-*:1.7.0-beta02 מופץ. גרסה 1.7.0-beta02 מכילה את השמירות האלה.
גרסה 1.7.0-beta01
14 במאי 2024
androidx.compose.runtime:runtime-*:1.7.0-beta01 מופץ. גרסה 1.7.0-beta01 מכילה את השמירות האלה.
גרסה 1.7.0-alpha08
1 במאי 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha08 מופץ. גרסה 1.7.0-alpha08 מכילה את השמירות האלה.
גרסה 1.7.0-alpha07
17 באפריל 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha07 מופץ. גרסה 1.7.0-alpha07 מכילה את השמירות האלה.
תכונות חדשות
- נוספה האפשרות לספק לוקאל של יצירה שמחושב על סמך הערכים של לוקאלים אחרים של יצירה, כברירת מחדל, באמצעות
compositionLocalWithComputedDefault()או באמצעות אספקת פונקציית למבדה לחישוב הערך באמצעותprovidesComputedבמקוםprovides. - אפשר לקבל את הערך של קומפוזיציה מקומית באמצעות המאפיין
currentValueשל הקומפוזיציה המקומית שאפשר לגשת אליה מתוך ה-lambda שמחשב את הערך. האפשרות הזו משמשת במקוםcurrent, שאפשר לגשת אליה רק בפונקציות@Composable. (Iadbc0)
שינויים ב-API
- אפשר לגשת באופן מיידי לאובייקטים של מצב שנוצרו לאחרונה מתוך קובצי snapshot אחרים, כולל קובץ ה-snapshot הגלובלי, עם המצב ההתחלתי שלהם. שינויים נוספים לא יהיו גלויים עד שהתמונה של מצב האובייקט בזמן היצירה שלו תוחל.
- המצב הראשוני של
mutableStateOf(), וגם של הגרסאות הפרימיטיביות שלו, הוא הערך שמועבר כפרמטר אלmutableStateOf(). המצב ההתחלתי שלmutableStateListOf()ושלmutableStateMapOf()הוא ריק. - נוספו
Snapshot.isInSnapshotו-Snapshot.PreexistingSnapshotIdשמשמשים להפעלה של אובייקט מצב כדי שיהיה נגיש באופן מיידי מה-snapshot הגלובלי עם היצירה שלו. - אובייקטים של מצב מותאם אישית יכולים לתמוך בגישה מיידית אם פועלים לפי דפוס השינויים שבוצעו באובייקטים המובנים של התמונה. (I84a17)
תיקוני באגים
- תוקן מיזוג של
readObserverבתמונות מצב מוטמעות. הבעיה הזו גרמה למצבים נגזרים מוטמעים להיות לא תקפים כשמשתמשים בהם בתוךsnapshotFlow. (Idf138)
גרסה 1.7.0-alpha06
3 באפריל 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha06 מופץ. גרסה 1.7.0-alpha06 מכילה את השמירות האלה.
תיקוני באגים
- תיקון הטיפול באספקת ערכים יחידים
providesDefault(538f45) - איך למנוע מצב של קיפאון ב-Recomposer בזמן גישה לשעון הפריימים (07e5c6)
גרסה 1.7.0-alpha05
20 במרץ 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha05 מופץ. גרסה 1.7.0-alpha05 מכילה את השמירות האלה.
תיקוני באגים
- ניקוי שינויים מאוחרים ביצירה שהושבתה (5950bc)
גרסה 1.7.0-alpha04
6 במרץ 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha04 מופץ. גרסה 1.7.0-alpha04 מכילה את השמירות האלה.
שיפורים בביצועים
- הפעלת
Snapshot.currentפעם אחת לכל הערכה של מצב נגזר (ee7daf) - קריאה של
currentRecordפעם אחת לכל תצפית בהרכב (b882b2) - הסרה של הקצאת איטרטורים לא מכוונת ב-
snapshotFlow(231e56) - הפעלת
nonSkippingGroupOptimizationבספריות של כתיבת קוד. כתוצאה מכך, הקוד שנוצר לכל הפונקציות הניתנות להרכבה שאי אפשר להפעיל מחדש ב-androidx יהיה יעיל יותר. אנחנו מתכננים להפעיל את ההגדרה הזו כברירת מחדל בעתיד. I(acbc08)
גרסה 1.7.0-alpha03
21 בפברואר 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha03 מופץ. גרסה 1.7.0-alpha03 מכילה את השמירות האלה.
שינויים ב-API
- הוספת קבוצות החלפה כדי לשפר את זיהוי השינויים (0941b5)
שיפורים בביצועים
- שיפור הקצאת הזיכרון בזיהוי שינויים (53e7fd)
- תיקון דליפת זיכרון בכלי ההלחנה (0e097d)
- השתמשו ב-
ScopeMapכדי להעביר ביטולים כשמרכיבים מחדש (e19a7e) - אופטימיזציה של מפת ביטולי התוקף כדי לשמור רק מצבים נגזרים (f11c44)
- החלפת
IdentityArraySetמופעים ב-ScatterSet(db572e) - אופטימיזציה של
removeScopeבScopeMap(bb0530)
גרסה 1.7.0-alpha02
7 בפברואר 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha02 מופץ. גרסה 1.7.0-alpha02 מכילה את השמירות האלה.
תיקוני באגים
- ביטול תוקף של ביטויי למדה שאפשר להרכיב בהרכבות משנה באותו פריים. (98301c)
- הפעלת הקריאה החוזרת
onReleaseבאותו סדר כמוonForgotten. (2cd790) - המסנן שינה מצבים שלא נצפו ב-
snapshotFlow. (796b80)
שיפורים בביצועים
- לשנות את תמונת המצב של הצופה במקום, אם היא כבר שקופה. (f60f30)
- אופטימיזציה של
SnapshotIdSet.lowest(). (7ae149) - משתמשים ב-
fold()ללא הקצאה ב-SnapshotIdSet. (532b7d) - הסרת הקצאת איטרטור (83f96b)
גרסה 1.7.0-alpha01
24 בינואר 2024
androidx.compose.runtime:runtime-*:1.7.0-alpha01 מופץ. גרסה 1.7.0-alpha01 מכילה את השמירות האלה.
אופטימיזציה של הביצועים
- הוספת אפשרות ליצור משבצות אחרי הוספה של קבוצת ילדים (b5960c)
- אופטימיזציה של שינויים בתיעוד של מצבי תמונת מצב (28c3fe)
- הפעלת מצב דילוג חזק (ed1766)
תיקוני באגים
- חשבון למטא של פרמטר ברירת מחדל ב-intrinsic remember (096665)
- שיפורים בייחודיות של
currentCompoundHashKeyבמקרים נוספים (d4a872) - הבנה של קבוצות כשיוצאים מקריאה מוטבעת לפונקציה (2a90fc)
גרסה 1.6
גרסה 1.6.8
12 ביוני 2024
androidx.compose.runtime:runtime-*:1.6.8 מופץ. גרסה 1.6.8 מכילה את השמירות האלה.
גרסה 1.6.7
1 במאי 2024
androidx.compose.runtime:runtime-*:1.6.7 מופץ. גרסה 1.6.7 מכילה את השמירות האלה.
גרסה 1.6.6
17 באפריל 2024
androidx.compose.runtime:runtime-*:1.6.6 מופץ. לא בוצעו שינויים מאז הגרסה האחרונה.
גרסה 1.6.5
3 באפריל 2024
androidx.compose.runtime:runtime-*:1.6.5 מופץ. גרסה 1.6.5 מכילה את השמירות האלה.
גרסה 1.6.4
20 במרץ 2024
androidx.compose.runtime:runtime-*:1.6.4 מופץ. גרסה 1.6.4 מכילה את השמירות האלה.
גרסה 1.6.3
6 במרץ 2024
androidx.compose.runtime:runtime-*:1.6.3 מופץ. גרסה 1.6.3 מכילה את השמירות האלה.
גרסה 1.6.2
21 בפברואר 2024
androidx.compose.runtime:runtime-*:1.6.2 מופץ. גרסה 1.6.2 מכילה את השמירות האלה.
גרסה 1.6.1
7 בפברואר 2024
androidx.compose.runtime:runtime-*:1.6.1 מופץ. גרסה 1.6.1 מכילה את השמירות האלה.
תיקוני באגים
- הפעלת הקריאה החוזרת
onReleaseבאותו סדר כמוonForgotten. (2cd790) - המסנן שינה מצבים שלא נצפו ב-
snapshotFlow. (796b80)
גרסה 1.6.0
24 בינואר 2024
androidx.compose.runtime:runtime-*:1.6.0 מופץ. גרסה 1.6.0 מכילה את השמירות האלה.
שינויים חשובים מאז גרסה 1.5.0
תכונות חדשות
- העברה מחדש של חריגים שמוסתרים במהלך לולאת הרה-קומפוזיציה (4dff9a)
אופטימיזציה של הביצועים
- אופטימיזציה של שינויים בתיעוד של מצבי תמונת מצב (28c3fe)
- אופטימיזציה
rememberSaveable(f01d79) - דחיית הקריאה מחדש של מצבים נגזרים עד לתיעוד השינויים (f38099)
- שיפור האופן שבו מספקים ערכים מקומיים של קומפוזיציה (a337ea)
תיקוני באגים
- תיקון דליפת זיכרון בטבלת משבצות (73fcfe)
- דילוג על יצירה מחדש של קומפוזיציות משנה שיוסרו. (Ieeb99, b/254645321)
- מחזורי החיים של
RememberObserverמופעלים רק כשהוא מאוחסן בחישוב של remember. (f6b4dc) - הגבלת הלכידה של
$dirtyלביטויי למדה מוטבעים. (acfca0) - תוקנה בעיה שבה תוכן שאפשר להזיז קיבל לפעמים את הלוקאלים הלא נכונים של הקומפוזיציה. (035cd6)
גרסה 1.6.0-rc01
10 בינואר 2024
androidx.compose.runtime:runtime-*:1.6.0-rc01 מופץ. גרסה 1.6.0-rc01 מכילה את השמירות האלה.
גרסה 1.6.0-beta03
13 בדצמבר 2023
androidx.compose.runtime:runtime-*:1.6.0-beta03 מופץ. גרסה 1.6.0-beta03 מכילה את השמירות האלה.
גרסה 1.6.0-beta02
29 בנובמבר 2023
androidx.compose.runtime:runtime-*:1.6.0-beta02 מופץ. גרסה 1.6.0-beta02 מכילה את השמירות האלה.
גרסה 1.6.0-beta01
15 בנובמבר 2023
androidx.compose.runtime:runtime-*:1.6.0-beta01 מופץ. גרסה 1.6.0-beta01 מכילה את השמירות האלה.
שינויים ב-API
- הפצת ערכים מסוימים של יציבות בהערה. (274a4c)
תיקוני באגים
- שימוש במדיניות הפניה להרכבת מצב של היקף מקומי בהקשר. (83361c)
- הגבלת $dirty capture לביטויי למדה מוטבעים. (acfca0)
- תוקנה בעיה שבה תוכן שאפשר להזיז קיבל לפעמים את הגדרות הלוקאל של הקומפוזיציה הלא נכונה. (035cd6)
- שימוש במיפוי האש מהיר יותר שלא מקצה זיכרון ב-
RecomposeScopeImpl. (d79494) - שימוש בחשבון
ObjectIntMapב-DerivedState. (21862e) - משתמשים ב-
IntRefעבור המספר השלםSnapshotThreadLocalב-DerivedState. (04eaf4)
גרסה 1.6.0-alpha08
18 באוקטובר 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha08 מופץ. גרסה 1.6.0-alpha08 מכילה את השמירות האלה.
תיקוני באגים
- מחזורי החיים של
RememberObserverמופעלים רק כשהוא מאוחסן בחישוב הזיכרון. (f6b4dc) - שיפור ההקצאות במיון של רשימת הפסילות. (954d63)
- שימוש במפות חדשות שלא מקצות זיכרון ב-
SnapshotStateObserver. (4303ce) - ניקוי ביטולים כשמשביתים את ההרכבה. (e001be)
גרסה 1.6.0-alpha07
4 באוקטובר 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha07 מופץ. גרסה 1.6.0-alpha07 מכילה את השמירות האלה.
שינויים ב-API
-
SnapshotStateListמסומן עכשיו כ-RandomAccessכדי לאפשר שימוש בגרסת האינדוקס הישיר של רכיבי העזרה לרשימות. (I5210c, b/219554654)
גרסה 1.6.0-alpha06
20 בספטמבר 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha06 מופץ. גרסה 1.6.0-alpha06 מכילה את השמירות האלה.
גרסה 1.6.0-alpha05
6 בספטמבר 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha05 מופץ. גרסה 1.6.0-alpha05 מכילה את השמירות האלה.
גרסה 1.6.0-alpha04
23 באוגוסט 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha04 מופץ. גרסה 1.6.0-alpha04 מכילה את השמירות האלה.
תכונות חדשות
- העברה מחדש של חריגים שמוסתרים במהלך לולאת הרה-קומפוזיציה (4dff9a)
שינויים ב-API
- נוספה שיטה להשבתה של
ReusableComposition, שמאפשרת להסיר תצפיות אבל לשמור את הצמתים במקומם. אפשר להפעיל מחדש את הקומפוזיציה שהושבתה על ידי התקשרות אלsetContent. (Ib7f31) - הוספנו ממשק
ReusableCompositionלניהול מחזור החיים של רכיבי משנה ולשימוש חוזר בהם. (I812d1, b/252846775)
גרסה 1.6.0-alpha03
9 באוגוסט 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha03 מופץ. גרסה 1.6.0-alpha03 מכילה את השמירות האלה.
תיקוני באגים
- תיקון אופטימיזציה חדשה
CompositionLocalProvider(3118e88) - תיקון האופן שבו מפורקים צמתי תוכן שניתן להעביר. (5e3d59b)
גרסה 1.6.0-alpha02
26 ביולי 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha02 מופץ. גרסה 1.6.0-alpha02 מכילה את השמירות האלה.
תכונות חדשות ושיפורים בביצועים
- אופטימיזציה
rememberSaveable(f01d79) - דחיית קריאה חוזרת של מצבים נגזרים עד לתיעוד השינויים (f38099)
- שיפור האופן שבו מספקים ערכים מקומיים של קומפוזיציה (a337ea)
-
SideEffectמסומן כ-@ExplicitGroupsComposableכדי למנוע יצירת קבוצה. (I74815) - אל תשוו בין מפות מקומיות של קומפוזיציה בשימוש חוזר (782071)
שינויים ב-API
- נוסף עומס יתר של מקרה מיוחד ל-
CompositionLocalProvidersשמונע תקורה שמשמשת להאצת אספקת ערכים מרובים, אבל הוא תקורה כשמספקים ערך יחיד. (I6d640, b/288169379)
תיקוני באגים
- תיקון דליפת זיכרון בטבלת משבצות (73fcfe)
- תיקון של אופן השחזור של
rememberSaveableכש-stateSaverמחזירה ערך null (90748c)
גרסה 1.6.0-alpha01
21 ביוני 2023
androidx.compose.runtime:runtime-*:1.6.0-alpha01 מופץ. גרסה 1.6.0-alpha01 מכילה את השמירות האלה.
תיקוני באגים
- דילוג על יצירה מחדש של קומפוזיציות משנה שיוסרו. (Ieeb99, b/254645321)
- הקצאות מופחתות כשמחילים תמונות מצב. (I65c09)
- לא לחשב את
readableHashב-DerivedStateאם התמונה לא שונתה (68c565)
גירסה 1.5
גרסה 1.5.4
18 באוקטובר 2023
androidx.compose.runtime:runtime-*:1.5.4 מופץ. גרסה 1.5.4 מכילה את השמירות האלה.
גרסה 1.5.3
4 באוקטובר 2023
androidx.compose.runtime:runtime-*:1.5.3 מופץ. גרסה 1.5.3 מכילה את השמירות האלה.
גרסה 1.5.2
27 בספטמבר 2023
androidx.compose.runtime:runtime-*:1.5.2 מופץ. גרסה 1.5.2 מכילה את השמירות האלה.
גירסה 1.5.1
6 בספטמבר 2023
androidx.compose.runtime:runtime-*:1.5.1 מופץ. גרסה 1.5.1 מכילה את השמירות האלה.
גרסה 1.5.0
9 באוגוסט 2023
androidx.compose.runtime:runtime-*:1.5.0 מופץ. גרסה 1.5.0 מכילה את השמירות האלה.
שינויים ב-API
- הוסרו הקצאות בסידור מחדש, באנימציות של צבעים וב-
AndroidComposeView. (Ib2bfa) - נוספה הערה
@StateFactoryMarkerכדי לסמן פונקציות שיוצרות מצבים וצריך להוסיף אותן לקריאה שלremember. (I64550) - הוספה של גרסאות פרימיטיביות של State ו-
MutableState(fb3d89) - תאריך הוספה
Snapshot.isApplyObserverNotificationPending(I672a5) - נוספו גרסאות פרימיטיביות של
StateAPI, שמאפשרות לעקוב אחרי ערכים מסוג Int, Long, Float ו-Double באובייקטים מסוגStateבלי לקבל קנסות על המרה אוטומטית של טיפוסים פרימיטיביים לאובייקטים. כדי להשתמש בהן, צריך להשתמש בשיטות החדשות ליצירת אובייקטיםmutableIntState(Int),mutableFloatStateOf(Float)וכו'. (I48e43)
תיקוני באגים
- דילוג על יצירה מחדש של קומפוזיציות משנה שיוסרו. (Ieeb99, b/254645321)
- לא לשמור הפניה ל-snapshot ב-
ComposerImpl(0206f7) - לא להחיל קומפוזיציה פעמיים (f5791b)
- הבטחת ביטול תוקף של ערכי מצב נגזרים שלא אותחלו (aa2a92)
- התקשרות אל
onEndChangesבמהלך סילוק הקומפוזיציה. (62cc8c) - תיקון של העברת תוכן לקומפוזיציה משנית (4beb41)
- תיקון פוטנציאלי של מצבי קיפאון (c1a425 ו-8edce0)
- הכלי ליצירת קומפוזיציה שנוצר לחלון Android יחסום עכשיו רק שיחות אל
withFrameNanosבמקום את כל הקומפוזיציה כשהוא מקבל התראה על ON_STOP. המשמעות היא שחלונות שמשויכים לפעילויות שהופסקו ימשיכו להרכיב מחדש את עצמם לשינויים בנתונים, אבל האנימציות או כל קריאה אחרת שלwithFrameNanosייחסמו. (Id9e7f, b/240975572) - הפעלת קריאות חוזרות לביטול ההפעלה של
LayoutNodeלפני סילוק האפקטים 3784073 - תיקון שינויים בסימונים של פונקציות Lambda שהופעלו מחדש ea81df9
- תיקון באג שקשור לעריכה בזמן אמת ב-Composable עם צמתים 73fd4d8
- ON_STOP צריך להשהות את השידורים של שעון הפריימים במקום את הקומפוזיציה ae276f1
- הוצאה משימוש של היקפי
SnapshotStateObserverלמצבים נגזרים שלא השתנו 84d9b1c - תיקון פוטנציאלי של מצב deadlock במהלך סילוק של קומפוזיציות 28761fc
- תיקון של העברת תוכן לקומפוזיציה משנית 92d4156
- תיקון של דגלים שהשתנו עבור פונקציות Lambda שהופעלו מחדש (8a03e9)
- הפעלת קריאות חוזרות לביטול ההפעלה של
LayoutNodeלפני סילוק האפקטים (8b0fa4) - פתרון בעיות ב-
endToMarker()כשמפסיקים קבוצות של צמתים. (d71d980) - שימוש בקבוצה הנוכחית
SlotWriterלבדיקה בהשבתה (a0b518b) - הסרת
fillב-SlotTable.moveSlotGapTo()והעברה לסגירה (81f9935) - תוקנה בעיה שגרמה לכך שפסילת תוכן לא התרחשה בזמן העברת תוכן שאפשר להזיז (1d7c024)
- פתרון בעיות של ביטולים מיידיים בתוכן שניתן להעברה שהועבר (8676618)
שיפורים בביצועים
- אם לא בוצעו שינויים בתמונת המצב, לא כדאי לחשב את
readableHashב-DerivedState. (307102) - הקצאות מופחתות (I65c09, d7ea77, 727974 ו-445808)
- ביטול מהיר של כתיבת הודעה
CoroutineScopes(a55362 ו-bd382f) - החלפת רשומות של אובייקטים של מצב ברשומות של מצב שלא ניתן לגשת אליהן (c986960)
- שימוש בכלי ההלחנה בהיקף הנכון כשמממשים קבוצות (9a5e5b6)
- שימוש ב-
IdentityArraySetלאחסון ביטולי תוקף של תמונות מצב (7f60cca) - הקטנת ההקצאות לתצפיות של תמונת מצב (5bc535f)
גרסה 1.5.0-rc01
26 ביולי 2023
androidx.compose.runtime:runtime-*:1.5.0-rc01 מופץ. גרסה 1.5.0-rc01 מכילה את השמירות האלה.
תיקוני באגים
דחיית קריאה חוזרת של מצבים נגזרים עד לתיעוד השינויים (f38099)
אפשר לבצע בדיקה אופציונלית כדי לקבל המלצה להעביר
mutableStateOf()קריאות לסוגים המקבילים והמיוחדים שלהן עבור פרימיטיבים. מזהה ה-lint הואAutoboxingStateCreation. בעבר, הבדיקה הזו הופעלה כברירת מחדל בכל הפרויקטים. כדי לראות את האזהרה הזו בעורך של Android Studio ובפלט של lint בפרויקט, צריך לשנות את רמת החומרה שלה ממידע לאזהרה (או לרמה גבוהה יותר) על ידי הצהרה עלwarning "AutoboxingStateCreation"בהגדרות של build.gradle או build.gradle.kts במודול, כמו שמוצג כאן (I34f7e):android { lint { warning "AutoboxingStateCreation" } ... }
גרסה 1.5.0-beta03
28 ביוני 2023
androidx.compose.runtime:runtime-*:1.5.0-beta03 מופץ. גרסה 1.5.0-beta03 מכילה את השמירות האלה.
תיקוני באגים
- דילוג על יצירה מחדש של קומפוזיציות משנה שיוסרו. (Ieeb99, b/254645321)
גרסה 1.5.0-beta02
7 ביוני 2023
androidx.compose.runtime:runtime-*:1.5.0-beta02 מופץ. גרסה 1.5.0-beta02 מכילה את השמירות האלה.
שיפורים בביצועים
- אם לא בוצעו שינויים בתמונת המצב, לא כדאי לחשב את
readableHashב-DerivedState. (307102)
גרסה 1.5.0-beta01
24 במאי 2023
androidx.compose.runtime:runtime-*:1.5.0-beta01 מופץ. גרסה 1.5.0-beta01 מכילה את השמירות האלה.
שינויים ב-API
- הסרנו הקצאות ברה-קומפוזיציה, באנימציות של צבעים וב-
AndroidComposeView(Ib2bfa) - נוספה הערה
@StateFactoryMarkerכדי לסמן פונקציות שיוצרות מצבים וצריך להוסיף אותן לקריאה שלremember. (I64550) - הוספת גרסאות פרימיטיביות של State ו-
MutableState(fb3d89) - תאריך הוספה
Snapshot.isApplyObserverNotificationPending(I672a5)
תיקוני באגים
- הקצאות מופחתות (I65c09, d7ea77, 727974 ו-445808 )
- לא לשמור הפניה ל-snapshot ב-
ComposerImpl(0206f7) - ביטול מהיר של כתיבת הודעה
CoroutineScopes(a55362 ו-bd382f) - לא להחיל קומפוזיציה פעמיים (f5791b)
- הבטחת ביטול תוקף של ערכי מצב נגזרים שלא אותחלו (aa2a92)
- התקשרות אל
onEndChangesבמהלך סילוק הקומפוזיציה. (62cc8c) - תיקון של העברת תוכן לקומפוזיציה משנית (4beb41)
- תיקון פוטנציאלי של מצבי קיפאון (c1a425
- הפונקציה ON_STOP צריכה להשהות את השידורים של שעון המסגרת במקום את הקומפוזיציה (f4a2d1)
- תיקון של דגלים שהשתנו עבור פונקציות Lambda שהופעלו מחדש (8a03e9)
- הפעלת קריאות חוזרות לביטול ההפעלה של
LayoutNodeלפני סילוק האפקטים (8b0fa4)
External Contribution
- נוסף
Snapshot.isApplyObserverNotificationPending(I672a5)
גרסה 1.5.0-alpha04
10 במאי 2023
androidx.compose.runtime:runtime-*:1.5.0-alpha04 מופץ. גרסה 1.5.0-alpha04 מכילה את השמירות האלה.
שינויים ב-API
- נוספו גרסאות פרימיטיביות של
StateAPI, שמאפשרות לעקוב אחרי ערכים מסוג Int, Long, Float ו-Double באובייקטים מסוגStateבלי לקבל קנסות על המרה אוטומטית של טיפוסים פרימיטיביים לאובייקטים. כדי להשתמש בהן, צריך להשתמש בשיטות החדשות ליצירת אובייקטיםmutableIntState(Int),mutableFloatStateOf(Float)וכו'. (I48e43)
תיקוני באגים
התקשרות אל
onEndChangesבמהלך סילוק הקומפוזיציה. צמתי פוקוס שהוסרו במהלךComposition.disposeנרשמים ל-onEndChangesכדי לאפס את הפוקוס.(03d4a47)מוודאים שערכי מצב נגזרים שלא אותחלו נפסלים. כל מצב נגזר משויך לרשימת התלויות שלו ב-
SnapshotStateObserver. הרשימה הזו משמשת לביטול תוקף של היקפים שמשויכים למצב נגזר בכל פעם שמתבצע שינוי בתלות. שינוי התלות נרשם בקידום התמונה, שיכול לקרות אחרי קריאת מצב נגזר (בגלל הקריאה ל-Snapshot.notifyObjectsInitialized()).הלוגיקה הקודמת של התבוננות במצב הנגזר ב-
SnapshotStateObserverניקתה תלות ישנות, ואז קראה ערך חדש. כתוצאה מכך נוצר מרוץ תהליכים עם ביטול תוקף שמתרחש במצב ניקוי, שבו ביטול התוקף של התלות לא נרשם.השינוי הזה משנה את הסדר של קריאת המצב הנגזר וניקוי התלות, כדי להבטיח שהביטול תמיד יקרה במצב תקין. (c472be6)
גרסה 1.5.0-alpha03
19 באפריל 2023
androidx.compose.runtime:runtime-*:1.5.0-alpha03 מופץ. גרסה 1.5.0-alpha03 מכילה את השמירות האלה.
שינויים ב-API
- הכלי ליצירת קומפוזיציה שנוצר לחלון Android יחסום עכשיו רק שיחות אל
withFrameNanosבמקום את כל הקומפוזיציה כשהוא מקבל התראה על ON_STOP. המשמעות היא שחלונות שמשויכים לפעילויות שהופסקו ימשיכו להרכיב מחדש את עצמם לשינויים בנתונים, אבל האנימציות או כל קריאה אחרת שלwithFrameNanosייחסמו. (Id9e7f, b/240975572)
תיקוני באגים
- תיקון פוטנציאלי של מצב קיפאון ברשימת תמונות המצב ובמפה 5c1a425
- הפעלת קריאות חוזרות לביטול ההפעלה של
LayoutNodeלפני סילוק האפקטים 3784073 - תיקון שינויים בסימונים של פונקציות Lambda שהופעלו מחדש ea81df9
- תיקון רגרסיה ב-Live Edit עבור Composable עם צמתים 73fd4d8
- ON_STOP צריך להשהות את השידורים של שעון הפריימים במקום את הקומפוזיציה ae276f1
- ביטול תוקף של היקפי
SnapshotStateObserverלמצבים נגזרים שלא השתנו 84d9b1c - תיקון פוטנציאלי של מצב קיפאון בעת סילוק קומפוזיציות 28761fc
- תיקון של העברת תוכן לקומפוזיציה משנית 92d4156
גרסה 1.5.0-alpha02
5 באפריל 2023
androidx.compose.runtime:runtime-*:1.5.0-alpha02 מופץ. גרסה 1.5.0-alpha02 מכילה את השמירות האלה.
תכונות חדשות
- אפשר עכשיו להשתמש באופרטור
getValueשל Kotlin כפונקציה שניתנת להרכבה (f174f6e)
תיקוני באגים ושיפורי ביצועים
- החלפת רשומות של אובייקטים של מצב ברשומות של מצב שלא ניתן לגשת אליהן (c986960)
- שימוש בכלי ההלחנה בהיקף הנכון כשמממשים קבוצות (9a5e5b6)
- פתרון בעיות ב-
endToMarker()כשמפסיקים קבוצות של צמתים. (d71d980) - שימוש בקבוצה הנוכחית
SlotWriterלבדיקה בהשבתה (a0b518b) - שימוש ב-
IdentityArraySetלאחסון ביטולי תוקף של תמונות מצב (7f60cca) - הסרת
fillב-SlotTable.moveSlotGapTo()והעברה לסגירה (81f9935) - תוקנה בעיה שגרמה לכך שפסילת תוכן לא בוצעה בזמן העברה של תוכן שאפשר להזיז (1d7c024)
- פתרון בעיות של ביטולים מיידיים בתוכן שניתן להעברה שהועבר (8676618)
- הפחתת ההקצאות לתצפיות של תמונת מצב (5bc535f)
גרסה 1.5.0-alpha01
22 במרץ 2023
androidx.compose.runtime:runtime-*:1.5.0-alpha01 מופץ. גרסה 1.5.0-alpha01 מכילה את השמירות האלה.
תכונות חדשות
- נוספה
Modifier.Node#coroutineScopeכדי לאפשר ל-Modifier.Nodesלהפעיל קורוטינות (I76ef9) - כדי לאפשר לאפליקציה
Modifier.Nodesלקרוא אתCompositionLocals, צריך להטמיע את הממשקCompositionLocalConsumerModifierNode. (Ib44df)
גרסה 1.4
גרסה 1.4.3
3 במאי 2023
הגרסה androidx.compose.runtime:runtime-*:1.4.3 יוצאת ללא שינויים.
גרסה 1.4.2
19 באפריל 2023
androidx.compose.runtime:runtime-*:1.4.2 מופץ. גרסה 1.4.2 מכילה את השמירות האלה.
תיקוני באגים
תיקון פוטנציאלי של מצב קיפאון ברשימת תמונות המצב ובמפה 2eb6570
יכול להיות שתוספת תוכן ל-
SnapshotStateListאו ל-SnapshotStateMapתגרום לקיפאון אם השינוי מתבצע במקביל לכתיבה ישירה לרשומת המצב. הסיכוי להיתקל בבעיה הזו גדל משמעותית בעקבות השינויים שהוצגו ב-93fcae828b, שמשתמש בכתיבות ישירות כדי לשחרר רשומות שלא נעשה בהן שימוש.הנעילות מסודרות כך שלא יתבצע ניסיון לנעילת תמונת מצב בזמן שנעילת מפה או רשימה מוחזקת.
גרסה 1.4.1
5 באפריל 2023
androidx.compose.runtime:runtime-*:1.4.1 מופץ. גרסה 1.4.1 מכילה את השמירות האלה.
תיקוני באגים
- תיקון
endToMarker()כשמפסיקים קבוצות של צמתים. d71d980
גרסה 1.4.0
22 במרץ 2023
androidx.compose.runtime:runtime-*:1.4.0 מופץ. גרסה 1.4.0 מכילה את השמירות האלה.
שינויים חשובים מאז גרסה 1.3.0
- שימוש בערך מאותחל מ-
LiveDataלהרכב הראשון 3680e25 - מוסיפים את
ComposeNodeLifecycleCallbackכדי לעקוב אחרי מחזור החיים של צמתי יצירה. 8b6a258 - הוספת הנכס
parameterTypesאלComposableMethod7b6c7ad
תיקוני באגים ושיפורי ביצועים
- ניקוי שני אינדקסים של היקף ב-
SnapshotStateObserver29f4a3e - הוספת קבוצות שנדרשות בגוף של פונקציות למדה שלא ניתן לדלג עליהן 7d06752
- שיפור מאפייני ההפניה לזיכרון של מצב תמונת המצב 93fcae8
- הסרת boxing בחיפושים מקומיים של קומפוזיציה 0875717
- שימוש במפתח הנכון לקבוצות של צמתים שאי אפשר לעשות בהם שימוש חוזר 6388d8d
- הגנה על
SnapshotStateObserverמפני הפעלות חוזרות והפעלות בו-זמניות 98cb6ba - נוסף אימות של גבולות האינדקס בשיטה
IdentityArraySetget 35a77d3 - עדכון מודול הכתיבה כדי להשתמש בתוספים של
ViewTreeLifecycleOwner21c2122 - שליחת התראות על החלת שינויים אחרי ש-Recomposer מסיים את המסגרת. 98f2641
- תיקון קריסה של אינדקס שחורג מהגבולות כשמבטלים את Recomposer 8f8656f
- תמיד לאלץ יצירה מחדש אם ספקי האב של הרכיב Composition השתנו 9526fcc
- Recomposer tolerance for cancelled Jobs a55f7ed
- שיפור הטיפול בביטולים במספר גדול של רכיבי Composer 9b7ed67
- תיקון של יצירת קבוצות סגירה להחזרות שאינן מקומיות b6f590c
גרסה 1.4.0-rc01
8 במרץ 2023
androidx.compose.runtime:runtime-*:1.4.0-rc01 מופץ. גרסה 1.4.0-rc01 מכילה את השמירות האלה.
תיקוני באגים
גרסה 1.4.0-beta02
22 בפברואר 2023
androidx.compose.runtime:runtime:1.4.0-beta02 וגם androidx.compose.runtime:runtime-saveable:1.4.0-beta02 מופצים. גרסה 1.4.0-beta02 מכילה את השמירות האלה.
גרסה 1.4.0-beta01
8 בפברואר 2023
androidx.compose.runtime:runtime-*:1.4.0-beta01 מופץ. גרסה 1.4.0-beta01 מכילה את השמירות האלה.
שינויים ב-API
- נוספה האפשרות
ComposeNodeLifecycleCallbackשמאפשרת מעקב אחרי מחזור החיים של צמתי Compose (I3731b) - הוספנו את
@TestOnlyאלComposer.disableSourceInformation()כי הפונקציה הזו בטוחה להפעלה רק בבדיקה. (I896c8)
תיקוני באגים
- הסרת תיבות בחיפושים מקומיים של קומפוזיציה (62f66a)
- שיפור מאפייני ההפניה לזיכרון של מצב Snapshot (dfb451)
גרסה 1.4.0-alpha05
25 בינואר 2023
androidx.compose.runtime:runtime:1.4.0-alpha05 וגם androidx.compose.runtime:runtime-saveable:1.4.0-alpha05 מופצים. גרסה 1.4.0-alpha05 מכילה את השמירות האלה.
שינויים ב-API
- מידע נוסף על סוגים/מאפיין המציין אם ערך יכול להיות ריק (nullability) של פונקציות מוטמעות/מוסתרות שהוצאו משימוש (I24f91)
גרסה 1.4.0-alpha04
11 בינואר 2023
androidx.compose.runtime:runtime-*:1.4.0-alpha04 מופץ. גרסה 1.4.0-alpha04 מכילה את השמירות האלה.
שינויים ב-API
- בקמפיין
TestMonotonicFrameClockנעשה עכשיו שימוש בהערה הנכונה לגבי ניסוי. (I95c9e)
תיקוני באגים
- הגנה על
SnapshotStateObserverמפני הפעלות חוזרות והפעלות בו-זמניות (d902fb)
גרסה 1.4.0-alpha03
7 בדצמבר 2022
androidx.compose.runtime:runtime-*:1.4.0-alpha03 מופץ. גרסה 1.4.0-alpha03 מכילה את השמירות האלה.
שינויים ב-API
- הוספת שיטה ציבורית חדשה למחלקה
ComposableMethodבדומה ל-java.lang.reflect.Method#getParameterTypes()(Iab0c3)
תיקוני באגים
- ההתראות על החלת תמונת המצב נשלחות עכשיו אחרי ש-
Recomposerמסיים להחיל את השינויים. (Iad6c0, b/222093277)
גרסה 1.4.0-alpha02
9 בנובמבר 2022
androidx.compose.runtime:runtime-*:1.4.0-alpha02 מופץ. גרסה 1.4.0-alpha02 מכילה את השמירות האלה.
גרסה 1.4.0-alpha01
24 באוקטובר 2022
androidx.compose.runtime:runtime-*:1.4.0-alpha01 מופץ. גרסה 1.4.0-alpha01 מכילה את השמירות האלה.
שינויים ב-API
- ל-
SnapshotStateListול-SnapshotStateMapיש עכשיו הטמעות מפורשות שלtoList()ושלtoMap(), בהתאמה. השיטות האלה מחזירות את התוכן הנוכחי שלהן בלי לבצע העתקה, כי הן מחזירות את הנתונים הפנימיים הבלתי ניתנים לשינוי שמשמשים לאחסון התוכן שלהן. לדוגמה, אפשר להשתמש בערך הזה כדי ליצור רצף של ערכים באמצעותsnapshotFlowבלי להעתיק את הנתונים. (Ica2bd)
גרסה 1.3
גרסה 1.3.3
11 בינואר 2023
androidx.compose.runtime:runtime-*:1.3.3 מופץ. גרסה 1.3.3 מכילה את השמירות האלה.
- אין שינויים מאז גרסה 1.3.2
גרסה 1.3.2
7 בדצמבר 2022
androidx.compose.runtime:runtime-*:1.3.2 מופץ. גרסה 1.3.2 מכילה את השמירות האלה.
תיקוני באגים
- העדכון כולל תמיכה ב-androidx.compose.ui 1.3.2
גרסה 1.3.1
9 בנובמבר 2022
androidx.compose.runtime:runtime-*:1.3.1 מופץ. גרסה 1.3.1 מכילה את השמירות האלה.
גרסה 1.3.0
24 באוקטובר 2022
androidx.compose.runtime:runtime-*:1.3.0 מופץ. גרסה 1.3.0 מכילה את השמירות האלה.
שינויים חשובים מאז גרסה 1.2.0
טיפול בחריגים / תמיכה ב-Live Edit
- כדי לשפר את התמיכה בעריכה בזמן אמת, הוספנו ממשקי API שמאפשרים לטפל בחריגים במהלך ההרכבה
- טיפול בשגיאות של קומפוזיציה ב-Hot Reload
- טיפול בשגיאות של עריכה בזמן אמת בשמירה או בשחזור
מעקב אחר קומפוזיציה
- הוספנו ממשקי API למעקב בזמן ריצה כדי לתמוך בכלים חדשים למעקב אחר קומפוזיציה
- יצירת קריאות שניתן להרכיב מהן אירועים למעקב
- נוספה מחדש הפונקציה ComposerKt.traceEventStart(Int, String)
Composable Reflection APIs
- הוספנו
ComposableMethodAPI חדש כדי לאפשר הפעלות אמינות יותר שמבוססות על רפלקציה של ממשקי API שניתנים להרכבה. - העברה של invokeComposable לזמן הריצה של Compose
- שינוי ה-API כדי להפעיל שיטה שאפשר להרכיב
תיקונים בזמן ריצה
- תיקון של בדיקת טווח פגומה לבדיקת סמנים בטבלת משבצות
- מתן הרשאה להעברת תוכן שניתן להעברה אל SubcomposeLayout וממנו
- תיקון העברת תוכן לתוכן חדש של קומפוזיציה משנית
מערכת תמונות המצב
- ביצענו שיפורים שונים במערכת תמונת המצב שקשורים לניהול הזיכרון, לביצועים ולדיוק.
- אופטימיזציה של הסרת היקף ב-SnapshotStateObserver
- הסרת תמונות מצב מוטמעות שנוצרו מתמונות מצב שקופות
- תוקנה בעיית מרוץ תהליכים בקריאת מצב מהתמונה הגלובלית
- תמיכה ב-DerivedState ב-SnapshotStateObserver
- מניעת הסרה של מצב נגזר מקומפוזיציה כשקוראים אותו בהיקפים אחרים
- שימוש ב-IdentityArrayMap במקום ב-HashMap בתוך DerivedState
- עדכון של observers של מצב נגזר לשימוש בווקטור ניתן לשינוי
- עדכון של ניקוי המצב של SnapshotStateObserver
- החלפה של SnapshotStateObserver.invalidated ב-ArraySet
- תוקנה בעיית מרוץ תהליכים בקריאת מצב מהתמונה הגלובלית
- תיקון השימוש ברשומה לא עדכנית בחישוב הגיבוב של DerivedState
- פתרון בעיה של מרוץ תהליכים כשמעבירים את התמונה הגלובלית
- האצת ניקוי התצפיות על היקף הפעולה ב-SnapshotStateObserver
גרסה 1.3.0-rc01
5 באוקטובר 2022
androidx.compose.runtime:runtime-*:1.3.0-rc01 מופץ. גרסה 1.3.0-rc01 מכילה את השמירות האלה.
תיקוני באגים
- תוקן
ArrayIndexOutOfBoundsExceptionשמגיע מטבלת המשבצות (b/249076084)
גרסה 1.3.0-beta03
21 בספטמבר 2022
androidx.compose.runtime:runtime-*:1.3.0-beta03 מופץ. גרסה 1.3.0-beta03 מכילה את השמירות האלה.
שינוי התנהגות שגורם לבעיות
- הפרמטרים
rememberו-rememberCoroutineScopeהשתנו ל-crossinline. במקום לאפשר החזרה מוקדמת שתגרום לשגיאה פנימית מאוחרת יותר, המערכת תדווח על שגיאה בהחזרות מוקדמות. - השינוי הזה עלול לגרום לדיווח על שגיאות חדשות בקומפיילר, ולדרוש הסרה של החזרות לא מקומיות מהביטויים של lambda שמועברים לפונקציות האלה. (Ibea62)
גרסה 1.3.0-beta02
7 בספטמבר 2022
androidx.compose.runtime:runtime-*:1.3.0-beta02 מופץ. גרסה 1.3.0-beta02 מכילה את השמירות האלה.
תיקוני באגים
- API מעודכן (I64ca0)
גרסה 1.3.0-beta01
24 באוגוסט 2022
androidx.compose.runtime:runtime-*:1.3.0-beta01 מופץ. גרסה 1.3.0-beta01 מכילה את השמירות האלה.
שינויים ב-API
- נוספה שיטת
findל-CompositionDataכדי לאפשר לכלי פיתוח שמשתמשים ב-API הזה למצוא במהירות קבוצת משנה של קומפוזיציה באמצעות הזהות שלה. (I5794f)
גרסה 1.3.0-alpha03
10 באוגוסט 2022
androidx.compose.runtime:runtime-*:1.3.0-alpha03 מופץ. גרסה 1.3.0-alpha03 מכילה את השמירות האלה.
גרסה 1.3.0-alpha02
27 ביולי 2022
androidx.compose.runtime:runtime-*:1.3.0-alpha02 מופץ. גרסה 1.3.0-alpha02 מכילה את השמירות האלה.
שינויים ב-API
- הוספנו מחדש את
ComposerKt.traceEventStart(Int, String)לצורך תאימות לדורות קודמים (I6e6de)
גרסה 1.3.0-alpha01
29 ביוני 2022
androidx.compose.runtime:runtime-*:1.3.0-alpha01 מופץ. גרסה 1.3.0-alpha01 מכילה את השמירות האלה.
שינויים ב-API
- העברת פונקציונליות של כלי עזר לזמן הריצה (I4f729)
גרסה 1.2
גרסה 1.2.1
10 באוגוסט 2022
androidx.compose.runtime:runtime-*:1.2.1 מופץ. גרסה 1.2.1 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה דליפת זיכרון: בוצעה סילוק של תמונות מצב מקוננות שנוצרו מתמונות מצב שקופות b/239603305
גרסה 1.2.0
27 ביולי 2022
androidx.compose.runtime:runtime-*:1.2.0 מופץ. גרסה 1.2.0 מכילה את השמירות האלה.
שינויים חשובים מאז 1.1.0
ב-Compose Runtime גרסה 1.2.0 נוספו כמה תכונות, וגם בוצעו תיקונים רבים של באגים שגרמו לחוסר יציבות. התכונה החדשה המשמעותית ביותר הייתה ההשקה של
movableContentOfAPI, שאפשר להשתמש בו כדי להפעיל חוויית משתמש מורכבת, כמו מעברים של רכיבים משותפים. ה-API שלmovableContentOfממיר פונקציית lambda שניתנת להרכבה לפונקציית lambda שמעבירה את המצב שלה ואת הצמתים התואמים לכל מיקום חדש שהיא נקראת אליו. כשהשיחה הקודמת יוצאת מהקומפוזיציה, המצב נשמר באופן זמני, ואם שיחה חדשה ל-Lambda נכנסת לקומפוזיציה, המצב והצמתים המשויכים מועברים למיקום של השיחה החדשה. אם לא נוספת שיחה חדשה, המצב מוסר באופן סופי והתראות נשלחות למשתמשים שזוכרים את הצופים.אם קוראים ל-
movableContentOflambda כמה פעמים באותה קומפוזיציה, נוצרים מצב וצמתים חדשים לכל קריאה. כשהקריאות יוצאות מהקומפוזיציה וקריאות חדשות נכנסות, המצב מועבר מהקריאות הראשונות שיוצאות לקריאות שנכנסות, לפי הסדר שבו הן נקראות. כל המידע שלא נדרש לשיחות חדשות מוסר באופן סופי.בנוסף לזה ולכמה תכונות חדשות אחרות, השקענו הרבה זמן בייצוב של זמן הריצה ומערכת מצב ה-Snapshot. הסרנו דליפות זיכרון שונות וביצענו אופטימיזציה של נתיבי קוד.
למטה מופיעה רשימה מסוכמת של השינויים:
תכונות חדשות ב-1.2
- הוספת תמונה ניסיונית של unsafeEnter/Leave
- הוספת Snapshot.asContextElement API ניסיוני
- הוספת Snapshot.withoutReadObservation
- איך מאפשרים להעביר מצב בתוך קומפוזיציה
- מעקב אחרי קומפוזיציות מחדש ב-Compose
ביצועים ב1.2
- שיפור הביצועים המקומיים של הקומפוזיציה
- צריך ליצור פרופילים של Baseline ל-Compose באמצעות נקודות השוואה
תיקוני באגים ב-1.2
- הסרת פרטי מעקב מהיקפי יצירה מחדש של גרסאות
- מניעת הסרה של מצב נגזר מקומפוזיציה כשקוראים אותו בהיקפים אחרים
- שימוש ב-removeScope() יעיל יותר ב-SnapshotStateObserver
- ניקוי יחסי תלות במצב הנגזר בקומפוזיציה
- תיקון של שינוי ב-currentCompositeKeyHash אחרי רה-קומפוזיציה פנימית בתוך תוכן שניתן להזזה
- ניקוי של קומפוזיציות לא תקפות במהלך הסילוק
- תיקון קריאה של מצב נגזר במהלך הרכבה מחדש
- תיקון של דליפת זיכרון כשמבצעים מעקב אחרי אובייקטים של מצב נגזר
- תוקן מפתח הגיבוב המורכב של movableContent כדי שיהיה עקבי
- תיקון מקרה שבו כלי ההלחנה קורס
- איך מוודאים שביטול תוקף של קבוצה יגרום להרכבה מחדש
- תיקון באג שבו הפונקציה rememberSaveable עם קלט משוחזרת בסדר שגוי
גרסה 1.2.0-rc03
29 ביוני 2022
androidx.compose.runtime:runtime-*:1.2.0-rc03 מופץ. גרסה 1.2.0-rc03 מכילה את השמירות האלה.
תיקוני באגים
- בעבר, תצפיות על מצב נגזר הוסרו ללא תנאי מההיקף של ה-recompose ומהקומפוזיציה, מה שגרם לבעיות בהיקפים אחרים שאולי עדיין צופים במצב הנגזר. השינוי הזה מסיר רק מופעים של מצב נגזר אם הם לא נצפים יותר על ידי היקפים אחרים. (b/236618362)
גרסה 1.2.0-rc02
22 ביוני 2022
androidx.compose.runtime:runtime-*:1.2.0-rc02 מופץ. גרסה 1.2.0-rc02 מכילה את השמירות האלה.
גרסה 1.2.0-rc01
15 ביוני 2022
androidx.compose.runtime:runtime-*:1.2.0-rc01 מופץ. גרסה 1.2.0-rc01 מכילה את השמירות האלה.
שינויים ב-API
- ממשקים בספריות של Compose נוצרים עכשיו באמצעות שיטות ממשק שמוגדרות כברירת מחדל ב-jdk8 (I5bcf1)
גרסה 1.2.0-beta03
1 ביוני 2022
androidx.compose.runtime:runtime-*:1.2.0-beta03 מופץ. גרסה 1.2.0-beta03 מכילה את השמירות האלה.
גרסה 1.2.0-beta02
18 במאי 2022
androidx.compose.runtime:runtime-*:1.2.0-beta02 מופץ. גרסה 1.2.0-beta02 מכילה את השמירות האלה.
גרסה 1.2.0-beta01
11 במאי 2022
androidx.compose.runtime:runtime-*:1.2.0-beta01 מופץ. גרסה 1.2.0-beta01 מכילה את השמירות האלה.
תכונות חדשות
- זו גרסת הבטא הראשונה של 1.2!
שינויים ב-API
- נוספה תכונה ניסיונית
Snapshot.unsafeEnter/unsafeLeave(I108f3) - נוסף API ניסיוני של
Snapshot.asContextElement()(Iff072) - אפשר להשתמש עכשיו בהערה
@ComposableTargetובהערות שמסומנות ב-@ComposableTargetMarkerבהיקף הקובץ באמצעות הקידומת@file. שימוש בהערת יעד בהיקף הקובץ יגרום לקומפיילר להניח שכל הפונקציות שניתנות להרכבה בקובץ מיועדות להיות היעד של כלי ההחלה המשויך. לדוגמה, השימוש ב-@file:UiComposableמצהיר שכל הפונקציות של@Composableמטרגטות את כלי ההחלה של ממשק המשתמש של Compose. פונקציה שצריכה לטרגט כלי החלה אחר חייבת לספק במפורש את הערת הסמן של היעד עבור כלי ההחלה הרצוי. (I40804)
גרסה 1.2.0-alpha08
20 באפריל 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha08 מופץ. גרסה 1.2.0-alpha08 מכילה את השמירות האלה.
שינויים ב-API
- הוספנו את
TracingInProgressלממשקCompositionTracer. (Ic6f12) - הוספת
recomposeScopeIdentityל-Composer (I0c873) - הגבלנו את ממשקי ה-API למעקב (Composer.setTracer) ל-
OptIn(InternalComposeTracingApi). (I9187f) - נוסף
ResuableContentHostשמאפשר שליטה טובה יותר על משך החיים של מצב שנוצר לתוכן שאפשר לעשות בו שימוש חוזר. לדוגמה, אם לא משתמשים באופן זמני בתת-קומפוזיציה, אפשר להשבית את התוכן שלה. כך כל המצב שנשמר בקומפוזיציה יישכח, ויופעלו כל האפקטים שניתן להסיר. (I2c0f2, b/220322704)
גרסה 1.2.0-alpha07
6 באפריל 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha07 מופץ. גרסה 1.2.0-alpha07 מכילה את השמירות האלה.
שינויים ב-API
- נוספה פונקציה חדשה
Snapshot.withoutReadObservation { ... }. היא מאפשרת למשתמשים להפעיל את ה-lambda שהועבר בלי להירשם לשינויים של ערכי המצב שנקראו במהלך הבלוק הזה. האפשרות הזו יכולה להיות שימושית בתרחישי שימוש שבהם רוצים ליהנות מהיתרונות של כתיבה וקריאה thread-safe שמבוססות על snapshot, אבל רוצים לקרוא את הערך בלי לגרום לרה-קומפוזיציה או למדידה מחדש מיותרות. (I9f365, b/214054486)
גרסה 1.2.0-alpha06
23 במרץ 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha06 מופץ. גרסה 1.2.0-alpha06 מכילה את השמירות האלה.
גרסה 1.2.0-alpha05
9 במרץ 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha05 מופץ. גרסה 1.2.0-alpha05 מכילה את השמירות האלה.
External Contribution
- העדכון כולל שימוש בשגרות משנה (coroutines) של Kotlinx בגרסה 1.6.0 (I3366d)
גרסה 1.2.0-alpha04
23 בפברואר 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha04 מופץ. גרסה 1.2.0-alpha04 מכילה את השמירות האלה.
שינויים ב-API
נוספו הפונקציות
ComposableTarget,ComposableTargetMarkerו-ComposableOpenTargetשמאפשרות דיווח בזמן קומפילציה על מצב שבו פונקציה הניתנת להגדרה מופעלת בטירגוט של פונקציית החלה שהיא לא נועדה להשתמש בה.ברוב המקרים, אפשר להסיק את ההערות האלה באמצעות תוסף הקומפיילר של Compose, ולכן השימוש בהערות האלה ישירות צריך להיות נדיר . המקרים שבהם אי אפשר להסיק כוללים יצירה ושימוש בממשק החלה מותאם אישית, פונקציות קומפוזביליות מופשטות (כמו שיטות ממשק), שדות או משתנים גלובליים שהם ביטויי למדה קומפוזביליים (משתנים מקומיים ופרמטרים נגזרים), או כשמשתמשים ב-
ComposeNodeאו בפונקציות קומפוזביליות קשורות.במקרה של פונקציות מותאמות אישית, הפונקציות הניתנות להגדרה שמפעילות את
ComposeNodeאו אתReusableComposeNodeצריכות להוסיף הערהCompoableTargetלפונקציה ולכל סוגי הפרמטרים של פונקציית ה-lambda הניתנת להגדרה. עם זאת, מומלץ ליצור הערה שמסומנת ב-ComposableTargetMarkerואז להשתמש בהערה המסומנת במקום ב-ComposableTargetישירות. הערה שאפשר להרכיב ומסומנת ב-ComposableTargetMarkerשווה ל-ComposbleTargetעם השם המלא של מחלקת המאפיינים כפרמטר של ה-applier. דוגמה לשימוש ב-ComposableTargetMarkerמופיעה במאמרanroidx.compose.ui.UiComposable. (I38f11)
גרסה 1.2.0-alpha03
9 בפברואר 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha03 מופץ. גרסה 1.2.0-alpha03 מכילה את השמירות האלה.
שינויים ב-API
נוספה הפונקציה
movableContentOfשממירה lambda קומפוזבילי ל-lambda שמעביר את המצב שלו ואת הצמתים התואמים לכל מיקום חדש שבו הוא נקרא. כשהשיחה הקודמת יוצאת מהקומפוזיציה, המצב נשמר באופן זמני, ואם שיחה חדשה ל-Lambda נכנסת לקומפוזיציה, המצב והצמתים המשויכים מועברים למיקום של השיחה החדשה. אם לא נוספת שיחה חדשה, המצב מוסר באופן סופי והמשתמשים שרשומים לקבלת עדכונים מקבלים הודעה.אם קוראים ל-
movableContentOflambda כמה פעמים באותה קומפוזיציה, נוצרים מצב וצמתים חדשים לכל קריאה. כשהקריאות יוצאות מהקומפוזיציה ונכנסות קריאות חדשות, המצב מועבר מהקריאות הראשונות שיוצאות לקריאות שנכנסות, לפי הסדר שבו הן נקראות. כל הנתונים שלא נדרשים לשיחות חדשות מוסרים באופן סופי. (Ib4850)הוספנו API למעקב אחר קומפוזיציה כדי לאפשר לכלים לספק מעקב מפורט יותר אחר פונקציות שניתנות להגדרה. הקומפיילר יוצר עכשיו קריאות ל-Tracing API שכוללות מידע על המקור. (Ib0eb5)
כדי להסיר את הקריאות האלה ואת פרטי המקור המשויכים מגרסת build להפצה, מוסיפים את כלל Proguard הבא:
-assumenosideeffects public class androidx.compose.runtime.ComposerKt { boolean isTraceInProgress(); void traceEventStart(int,java.lang.String); void traceEventEnd(); }מוסיפים את
InternalComposeScopeכדי שהכלים יוכלו לזהות קומפוזיציה במהלך הרכבה מחדש. (I07a3f)
גרסה 1.2.0-alpha02
26 בינואר 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha02 מופץ. גרסה 1.2.0-alpha02 מכילה את השמירות האלה.
גרסה 1.2.0-alpha01
12 בינואר 2022
androidx.compose.runtime:runtime-*:1.2.0-alpha01 מופץ. גרסה 1.2.0-alpha01 מכילה את השמירות האלה.
שינויים ב-API
- נוסף שדה
identityל-CompositionDataכדי ליצור מזהים קבועים ב-Layout Inspector. (Ic116e)
עדכונים של יחסי תלות
- עכשיו תלוי ב-Kotlin
1.6.10.
גרסה 1.1
גרסה 1.1.1
23 בפברואר 2022
androidx.compose.runtime:runtime-*:1.1.1 מופץ. גרסה 1.1.1 מכילה את השמירות האלה.
תיקוני באגים
- תיקון
NullPointerExceptionב-androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList(aosp/1947059, b/206677462) - תוקנה קריסה שנגרמה בגלל תוכן בלוח בזמן קריאה מהלוח ב-Android. (I06020, b/197769306)
- תוקנה בעיה ב-RTL ב-
LazyVerticalGrid(aosp/1931080, b/207510535)
גרסה 1.1.0
9 בפברואר 2022
androidx.compose.runtime:runtime-*:1.1.0 מופץ. גרסה 1.1.0 מכילה את השמירות האלה.
שינויים חשובים מאז גרסה 1.0.0
- תמיכה יציבה באפקט הגלילה מעבר לקצה ב-Android 12
- שיפורים בגודל של יעד מגע
- שימו לב: ב-Compose 1.0, רכיבי Material ירחיבו את שטח הפריסה שלהם כדי לעמוד בהנחיות הנגישות של Material בנוגע לגודל יעד המגע. לדוגמה, יעד המגע של לחצן יתרחב לגודל מינימלי של
48x48dp, גם אם הגדרתם גודל קטן יותר ללחצן. ההתנהגות הזו של Compose Material זהה להתנהגות של רכיבי Material Design, כך שאם משלבים Views ו-Compose, ההתנהגות תהיה עקבית. השינוי הזה גם מבטיח שכשתשתמשו ברכיבי Compose Material כדי ליצור את ממשק המשתמש, תעמדו בדרישות המינימליות לנגישות של יעדי מגע. - תמיכה יציבה בפס ניווט
- העברה של מספר ממשקי API שהיו ניסיוניים בעבר למצב יציב
- תמיכה בגרסאות חדשות יותר של Kotlin
גרסה 1.1.0-rc03
26 בינואר 2022
androidx.compose.runtime:runtime-*:1.1.0-rc03 מופץ. גרסה 1.1.0-rc03 מכילה את השמירות האלה.
תיקוני באגים
- העדכון כולל תמיכה ב-Compose Material
1.1.0-rc03
גרסה 1.1.0-rc01
15 בדצמבר 2021
androidx.compose.runtime:runtime-*:1.1.0-rc01 מופץ. גרסה 1.1.0-rc01 מכילה את השמירות האלה.
גרסה 1.1.0-beta04
1 בדצמבר 2021
androidx.compose.runtime:runtime-*:1.1.0-beta04 מופץ. גרסה 1.1.0-beta04 מכילה את השמירות האלה.
תכונות חדשות
- העדכון בוצע כדי שתהיה תאימות ל-Kotlin
1.6.0
גרסה 1.1.0-beta03
17 בנובמבר 2021
androidx.compose.runtime:runtime-*:1.1.0-beta03 מופץ. גרסה 1.1.0-beta03 מכילה את השמירות האלה.
גרסה 1.1.0-beta02
3 בנובמבר 2021
androidx.compose.runtime:runtime-*:1.1.0-beta02 מופץ. גרסה 1.1.0-beta02 מכילה את השמירות האלה.
שינויים ב-API
- קוד ה-Snapshot פוצל לכמה קבצים, אבל כולם עדיין נמצאים באותה מחלקת JVM. (Ic6c98)
גרסה 1.1.0-beta01
27 באוקטובר 2021
androidx.compose.runtime:runtime-*:1.1.0-beta01 מופץ. גרסה 1.1.0-beta01 מכילה את השמירות האלה.
גרסה 1.1.0-alpha06
13 באוקטובר 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha06 מופץ. גרסה 1.1.0-alpha06 מכילה את השמירות האלה.
שינויים ב-API
- הוסר
InternalCompilerApiמשיטות של Composer שנדרשות לקריאה בין מודולים (I1aa0b) - הפונקציה
Recomposer.stateהוצאה משימוש והוחלפה בפונקציהRecomposer.currentStateכדי לשנות את הסוג שלה ל-StateFlow (Ic2ab3, b/197773820)
גרסה 1.1.0-alpha05
29 בספטמבר 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha05 מופץ. גרסה 1.1.0-alpha05 מכילה את השמירות האלה.
גרסה 1.1.0-alpha04
15 בספטמבר 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha04 מופץ. גרסה 1.1.0-alpha04 מכילה את השמירות האלה.
גרסה 1.1.0-alpha03
1 בספטמבר 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha03 מופץ. גרסה 1.1.0-alpha03 מכילה את השמירות האלה.
תכונות חדשות
- הקומפיילר של Compose תומך עכשיו בגרסאות ישנות יותר של Compose Runtime (1.0). לפני השינוי הזה, מהדר Compose היה תואם רק ל-Compose Runtime מאותה גרסה או מגרסה מאוחרת יותר. אחרי השינוי הזה, מהדר Compose תואם לגרסה ישנה יותר של Compose Runtime (1.0). (aosp/1796968)
- Compose
1.1.0-alpha03עודכן כך שיסתמך על Kotlin1.5.30. (I74545)
גרסה 1.1.0-alpha02
18 באוגוסט 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha02 מופץ. גרסה 1.1.0-alpha02 מכילה את השמירות האלה.
גרסה 1.1.0-alpha01
4 באוגוסט 2021
androidx.compose.runtime:runtime-*:1.1.0-alpha01 מופץ. גרסה 1.1.0-alpha01 מכילה את השמירות האלה.
גירסה 1.0
גרסה 1.0.5
3 בנובמבר 2021
androidx.compose.runtime:runtime-*:1.0.5 מופץ. גרסה 1.0.5 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה קריסה במעקב אחר מופעים של derivedStateOf. (aosp/1792247)
גרסה 1.0.4
13 באוקטובר 2021
androidx.compose.runtime:runtime-*:1.0.4 מופץ. גרסה 1.0.4 מכילה את השמירות האלה.
עדכונים של יחסי תלות
- העדכון בוצע כדי להסתמך על Kotlin
1.5.31
גרסה 1.0.3
29 בספטמבר 2021
androidx.compose.runtime:runtime-*:1.0.3 מופץ. גרסה 1.0.3 מכילה את השמירות האלה.
עדכונים של יחסי תלות
- העדכון בוצע כדי להסתמך על Kotlin
1.5.30
גרסה 1.0.2
1 בספטמבר 2021
androidx.compose.runtime:runtime-*:1.0.2 מופץ. גרסה 1.0.2 מכילה את השמירות האלה.
העדכון תומך בגרסת Compose 1.0.2. Compose 1.0.2 עדיין תואם ל-Kotlin 1.5.21.
גרסה 1.0.1
4 באוגוסט 2021
androidx.compose.runtime:runtime-*:1.0.1 מופץ. גרסה 1.0.1 מכילה את השמירות האלה.
עדכונים של יחסי תלות
- העדכון כולל תלות ב-Kotlin
1.5.21.
גרסה 1.0.0
28 ביולי 2021
androidx.compose.runtime:runtime-*:1.0.0 מופץ. גרסה 1.0.0 מכילה את השמירות האלה.
התכונות העיקריות בגרסה 1.0.0
זו הגרסה היציבה הראשונה של Compose. פרטים נוספים זמינים בבלוג הרשמי של Compose.
בעיות מוכרות
אם אתם משתמשים ב-Android Studio Bumblebee Canary 4 או ב-AGP
7.1.0-alpha04/7.1.0-alpha05, יכול להיות שתיתקלו בקריסה הבאה:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"כדי לפתור את הבעיה, צריך להגדיל באופן זמני את minSdkVersion ל-24 ומעלה בקובץ
build.gradle. הבעיה הזו תיפתר בגרסה הבאה של Android Studio Bumblebee וב-AGP7.1. (b/194289155)
גרסה 1.0.0-rc02
14 ביולי 2021
androidx.compose.runtime:runtime-*:1.0.0-rc02 מופץ. גרסה 1.0.0-rc02 מכילה את השמירות האלה.
- תוקנו תנאי מרוץ ב-SnapshotStateObserver שגרמו ל-NullPointerExceptions לא סדירים. (aosp/1763445, aosp/1758105, b/192677711)
- תוקנו בעיות שקשורות לתמונות מצב של זמן ריצה שגרמו לקריסות של
java.lang.IllegalStateException: Reading a state that was created after the snapshot was taken or in a snapshot that has not yet been applied. (b/193006595, b/192570897)
גרסה 1.0.0-rc01
1 ביולי 2021
androidx.compose.runtime:runtime-*:1.0.0-rc01 מופץ. גרסה 1.0.0-rc01 מכילה את השמירות האלה.
גרסה 1.0.0-beta09
16 ביוני 2021
androidx.compose.runtime:runtime-*:1.0.0-beta09 מופץ. גרסה 1.0.0-beta09 מכילה את השמירות האלה.
נוספו כללי פרופיל
בגרסה הזו נוספו כללי פרופיל למודולים הבאים של כתיבת הודעות (I14ed6):
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
מהם כללי פרופיל?
כללי הפרופיל של ספרייה מצוינים בקובץ טקסט
baseline-prof.txtשנמצא בספרייהsrc/mainאו בספרייה מקבילה. בכל שורה בקובץ מצוין כלל, ובמקרה הזה כלל הוא תבנית להתאמה לשיטות או למחלקות בספרייה. התחביר של הכללים האלה הוא קבוצת-על של פורמט הפרופיל של ART שקריא לאנשים, שמשמש כשמשתמשים ב-adb shell profman --dump-classes-and-methods .... הכללים האלה מופיעים באחת משתי צורות, כדי לטרגט שיטות או מחלקות.כלל של method ייראה כך:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>כלל כיתה יכלול את התבנית הבאה:
<CLASS_DESCRIPTOR>כאן
<FLAGS>הוא אחד או יותר מהתוויםH,Sו-Pכדי לציין אם לסמן את השיטה הזו כ'פופולרית', 'הפעלה' או 'אחרי הפעלה'.
<CLASS_DESCRIPTOR>הוא המתאר של המחלקה שאליה משתייכת המתודה המטורגטת. לדוגמה, למחלקהandroidx.compose.runtime.SlotTableיהיה דסקריפטור שלLandroidx/compose/runtime/SlotTable;.
<METHOD_SIGNATURE>הוא החתימה של ה-method, והוא כולל את השם, סוגי הפרמטרים וסוגי הערכים המוחזרים של ה-method. לדוגמה, לשיטהfun isPlaced(): Booleanב-LayoutNodeיש חתימהisPlaced()Z.התבניות האלה יכולות לכלול תווים כלליים (
**,*ו-?) כדי שכלל אחד יכלול כמה שיטות או מחלקות.
מה עושים הכללים?
שיטה עם הדגל
Hמציינת שהשיטה הזו היא שיטה 'פעילה' וצריך לקמפל אותה מראש.שיטה עם הדגל
Sמציינת שהיא שיטה שמופעלת בהפעלה, וצריך לקמפל אותה מראש כדי להימנע מעלות הקומפילציה והפרשנות של השיטה בזמן ההפעלה.מתודה עם הדגל
Pמציינת שהיא מתודה שמופעלת אחרי ההפעלה.אם מחלקה מסוימת מופיעה בקובץ הזה, המשמעות היא שהיא נמצאת בשימוש במהלך ההפעלה, ולכן צריך להקצות לה מראש מקום בזיכרון כדי להימנע מעלות הטעינה של המחלקה.
איך זה עובד?
- ספריות יכולות להגדיר את הכללים האלה, שייארזו בפרטי מידע שנוצרו בתהליך של פיתוח (Artifact) מסוג AAR. כשבונים אפליקציה שכוללת את הארטיפקטים האלה, הכללים האלה משולבים יחד, והכללים המשולבים משמשים לבניית פרופיל ART בינארי קומפקטי שספציפי לאפליקציה. לאחר מכן, מערכת ART יכולה להשתמש בפרופיל הזה כשהאפליקציה מותקנת במכשירים כדי לבצע קומפילציה מראש של קבוצת משנה ספציפית של האפליקציה, וכך לשפר את הביצועים של האפליקציה, במיוחד בהפעלה הראשונה. הערה: הפעולה הזו לא תשפיע על אפליקציות שאפשר לבצע בהן ניפוי באגים.
גרסה 1.0.0-beta08
2 ביוני 2021
androidx.compose.runtime:runtime-*:1.0.0-beta08 מופץ. גרסה 1.0.0-beta08 מכילה את השמירות האלה.
שינויים ב-API
-
State<T>נקרא עכשיוState<out T>(I69049) ControlledCompositionשינוי ב-API כדי לאפשר הרכבה מחדש של שינויים במעבר יחיד של הרכבה מחדש. (Iaafd1, b/184173932)
גרסה 1.0.0-beta07
18 במאי 2021
androidx.compose.runtime:runtime-*:1.0.0-beta07 מופץ. גרסה 1.0.0-beta07 מכילה את השמירות האלה.
שינויים ב-API
- נוספו ממשקי API חדשים של מהדר Compose שמאפשרים להסיר את פרטי המקור שנוצרו על ידי המהדר במהלך מזעור המקור. (Ia34e6)
הוספנו את
ReusableContent, שינסה לעשות שימוש חוזר בצמתים בתוכן שלו במקום להחליף אותם כשהמפתח משתנה. כשמשנים את המפתח, המערכת מתעלמת מהערכים הקודמים בטבלת המשבצות של התוכן, למעט הצמתים שנוצרו והערכים ששימשו לעדכון הצמתים.הוספנו את
ReusableComposeNode, שישתמש מחדש בצומת שהונפק במקום להחליף אותו כמו שקורה ב-ComposeNode. (I1dd86)@ComposeCompilerApiכבר לא@RequiresOptIn(Iab690)
תיקוני באגים
- הקומפוננטות LazyColumn/Row ישמרו עכשיו עד 2 פריטים שהיו גלויים בעבר כפעילים (לא יבוטלו) גם אחרי שהם כבר לא גלויים. כך הרכיב יכול לעשות שימוש חוזר בתתי-הקומפוזיציות הפעילות כשצריך ליצור פריט חדש, מה שמשפר את ביצועי הגלילה. (Ie5555)
גרסה 1.0.0-beta06
5 במאי 2021
androidx.compose.runtime:runtime-*:1.0.0-beta06 מופץ. גרסה 1.0.0-beta06 מכילה את השמירות האלה.
שינויים ב-API
@ComposeCompilerApiכבר לא@RequiresOptIn(Iab690)
גרסה 1.0.0-beta05
21 באפריל 2021
androidx.compose.runtime:runtime-*:1.0.0-beta05 מופץ. גרסה 1.0.0-beta05 מכילה את השמירות האלה.
שינויים ב-API
- הוסר
@InternalComposeApiעבור קריאות וכתיבות של תמונת מצב של הקלטה (Id134d)
תיקוני באגים
- קבצי AndroidManifest מ-ui-test-manifest ומ-ui-tooling-data תואמים עכשיו ל-Android 12 (I6f9de, b/184718994)
גרסה 1.0.0-beta04
7 באפריל 2021
androidx.compose.runtime:runtime-*:1.0.0-beta04 מופץ. גרסה 1.0.0-beta04 מכילה את השמירות האלה.
תיקוני באגים
לפני השינוי הזה, אפשר היה לדלג על פונקציות מקומיות שניתנות להגדרה על סמך הפרמטרים שלהן. אחרי השינוי הזה, לא תהיה יותר דילוג על פונקציות מקומיות שניתנות להרכבה. השינוי הזה נעשה כי מקובל וצפוי שפונקציות מקומיות יקבלו פרמטרים מההורה שלהן, והדילוג עליהן הוא מקור נפוץ לבאגים.
לסיכום, נסתכל על הדוגמה הבאה:
@Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) { @Composable fun ShowCount() { Text("Count: $count") } ShowCount() Button(onClick={ onCountChange(count + 1) }) { Text("Increment") } }לפני השינוי הזה, הפונקציה
ShowCountהייתה תמיד מדלגת, גם אחרי שהפרמטרcountעודכן. זה כבר לא המצב. (I5648a)תוקנה הבעיה שבה
rememberSaveable()שחזר את הערך הישן כשנעשה בו שימוש עם פרמטרים של קלט (I1b110, b/182403380)
גרסה 1.0.0-beta03
24 במרץ 2021
androidx.compose.runtime:runtime-*:1.0.0-beta03 מופץ. גרסה 1.0.0-beta03 מכילה את השמירות האלה.
שינויים ב-API
- האפשרות
DefaultMonotonicFrameClockהוצאה משימוש. התקשרות אלwithFrameNanosאוRecomposer.runRecomposeAndApplyChangesללאMonotonicFrameClockתגרום עכשיו לשגיאהIllegalStateException. (I4eb0d)
גרסה 1.0.0-beta02
10 במרץ 2021
androidx.compose.runtime:runtime-*:1.0.0-beta02 מופץ. גרסה 1.0.0-beta02 מכילה את השמירות האלה.
תיקוני באגים
- החלת הגבלות על שימוש ציבורי בממשקי API ניסיוניים (I6aa29, b/174531520)
- תוקן באג שגורם ל-
rememberSaveable { mutableStateOf(0) }לא לפעול כשמשתמשים בו בתוך יעד של navigation-compose. (I1312b, b/180042685, b/180701630)
גרסה 1.0.0-beta01
24 בפברואר 2021
androidx.compose.runtime:runtime-*:1.0.0-beta01 מופץ. גרסה 1.0.0-beta01 מכילה את השמירות האלה.
זו הגרסה הראשונה של Compose 1.0.0 Beta.
שינויים ב-API
- מוסיפים
Recomposer.runRecomposeConcurrentlyAndApplyChangesexperimental API for recomposing invalidated compositions off the main frame loop. (I342d0) - כל הרכיבים הקומפוזביליים שמסומנים ב- @ReadOnlyComposable עוברים עכשיו אימות בזמן ההידור כדי לוודא שהם מבצעים רק קריאות לרכיבים אחרים מסוג @ReadOnlyComposables (I58961)
השדה
defaultFactoryעבורcompositionLocalOfו-staticCompositionLocalOfהוא עכשיו שדה חובה ולא שדה אופציונלי.השינוי הזה מסיר שגיאת סוג פוטנציאלית עבור סוגים שאי אפשר להגדיר כ-nullable, שלא סופקה להם הגדרת ברירת מחדל. בעבר, הפעולה הזו הייתה מספקת הפניה לערך null עבור סוג שלא ניתן להקצאה.
בסוגים שניתן להגדיר כ-nullable, כדאי לספק את
{ null }כברירת המחדל של factory.אנחנו לא ממליצים להשתמש ב-locals עם סוגים שלא יכולים להיות null, אלא אם אפשר לספק ברירת מחדל הגיונית. אם אין ברירת מחדל הגיונית, פונקציית ה-lambda
defaultFactoryצריכה להחזיר חריגה. עם זאת, אם מתרחשת חריגה, המשמעות היא שלצרכנים של המקומי תהיה תלות מרומזת באספקת המקומי, שלא נאכפת על ידי מערכת הטיפוס. (Ifbd2a)סמלים שהוצאו משימוש הוסרו מסביבת זמן הריצה של הכתיבה (I3252c)
הוסר
emptyContent()שהוצא משימוש. במקומה צריך להשתמש במדיניות{}. (Idb33f, b/179432510)השם Providers השתנה ל-CompositionLocalProvider
- הקונסטרוקטור Composition לא מקבל יותר פרמטר מפתח, והוא הוצא משימוש.
- הפונקציה currentCompositeKeyHash הפכה לנכס ברמה העליונה שאפשר להגדיר, במקום פונקציה ברמה העליונה שאפשר להגדיר.
- המחלקות CompositionData ו-CompositionGroup הועברו למרחב השמות androidx.compose.runtime.tooling
- הפונקציה ComposableLambda הפכה לממשק במקום למחלקה קונקרטית, והיא כבר לא כוללת פרמטרים של סוג.
- הפכנו את ComposableLambdaN לממשק במקום למחלקה קונקרטית, והוא כבר לא כולל פרמטרים של סוג.
- הפונקציה snapshotFlow הועברה למרחב השמות androidx.compose.runtime
- שיטת המיזוג של SnapshotMutationPolicy כבר לא ניסיונית
- הוסרה הפונקציה clearRoots ברמה העליונה @TestOnly. היא כבר לא נחוצה.
- הפונקציות keySourceInfoOf ו-resetSourceInfo הוסרו. הם כבר לא נחוצים.
- הפונקציה Composer.collectKeySourceInformation הוסרה. היא כבר לא נחוצה.
- השיטות isJoinedKey, joinedKeyLeft ו-joinedKeyRight הוסרו. הם כבר לא נחוצים.
- ממשקי API שונים ברמה העליונה הועברו ואורגנו מחדש בקבצים שונים. בגלל הסמנטיקה של מחלקת הקבצים ב-Kotlin, תהיה בעיה בתאימות הבינארית אבל לא בתאימות המקורית, ולכן לא אמורה להיות בעיה לרוב המשתמשים.
- (I99b7d, b/177245490)
SnapshotStateObserver כבר לא ניסיוני (Id2e6a)
נמחקו כמה ממשקי API שהוצאו משימוש בעבר (Ice5da, b/178633932)
בוצעו השינויים הבאים ב-Material API:
- נוסף פרמטר contentPadding לרכיב Top/BottomAppBar כדי לאפשר התאמה אישית של הריווח שמוגדר כברירת מחדל.
- הפרמטרים ב-BackdropScaffold סודרו מחדש בהתאם להנחיות ה-API, כך שהפרמטרים הנדרשים מופיעים לפני הפרמטרים האופציונליים.
- הפרמטר
iconהועבר ב-BottomNavigationItem כך שיופיע אחריselectedו-onClick. - השם של הפרמטר
alwaysShowLabelsב-BottomNavigationItem שונה ל-alwaysShowLabel. - השם של הפרמטרים
bodyContentבכמה רכיבים השתנה ל-content. - הפרמטרים ב-
ButtonDefaults.buttonColors()סודרו מחדש. חשוב לשים לב: מכיוון שסוג הפרמטרים לא השתנה, לא תהיה שגיאה בקוד. עם זאת, כדי שהקוד יפעל כמו קודם, צריך לוודא שאתם משתמשים בפרמטרים עם שמות או לעדכן את הסדר באופן ידני. - הפרמטר
secondaryVariantנוסף אלdarkColors(). הצבע הזה בדרך כלל זהה לצבעsecondaryבעיצוב הכהה, אבל אנחנו מוסיפים אותו כדי לשמור על עקביות ולאפשר התאמה אישית נוספת. - הוסרו ElevationDefaults ו-animateElevation() מממשק ה-API הציבורי כי לא היה בהם שימוש נפוץ והם לא היו שימושיים.
- השם של
onValueChangeEndב-Sliderשונה ל-onValueChangeFinishedוהוגדר כ-nullable. - השם של הפרמטר
textב-Snackbarשונה ל-contentכדי לשמור על עקביות. - נוסף הפרמטר
contentPaddingל-DropdownMenuItemכדי לאפשר התאמה אישית של שולי ברירת המחדל, והוגדר ש-contentיהיה תוסף ל-RowScope. - השם של
ModalDrawerLayoutשונה לModalDrawer. - השם של
BottomDrawerLayoutשונה לBottomDrawer. - (I1cc66)
גרסה 1.0.0-alpha12
10 בפברואר 2021
androidx.compose.runtime:runtime-*:1.0.0-alpha12 מופץ. גרסה 1.0.0-alpha12 מכילה את השמירות האלה.
שינויים ב-API
- התמיכה ב-ViewGroups הוסרה מ-UiApplier. הפונקציות הניתנות להרכבה emitView שהוצאו משימוש הוסרו. (Ifb214)
- השם של CompositionReference שונה ל-CompositionContext (I53fcb)
- הפונקציה ComponentActivity.setContent הועברה אל androidx.activity.compose.setContent במודול androidx.activity:activity-compose. (Icf416)
- ה-API של Snapshot עודכן כדי להיות עקבי יותר עם הנחיות ה-API, וכדי להסתיר מחלקות הטמעה פנימיות מה-API הציבורי. (Id9e32)
- שונה השם של Ambients כדי להתאים לשינוי השם של Ambient -> CompositionLocal. בעבר, השם של Ambients היה AmbientFoo, ועכשיו השם של CompositionLocals הוא LocalFoo. (I2d55d)
- השם של Ambient שונה ל-CompositionLocal, והשמות של ambientOf / staticAmbientOf שונו ל-compositionLocalOf / staticCompositionLocalOf בהתאמה. השינוי הזה עוזר להבהיר את המטרה של CompositionLocal: מנגנון לאספקת ערכים מקומיים לקומפוזיציה או לאחזור שלהם. לפני מופעים של CompositionLocal צריך להוסיף את הקידומת
Local, למשל val LocalFoo = compositionLocalOf { Foo() }. (Ia55b6) - הפונקציות takeMutableSnapshot ו-takeSnapshot הועברו להיות פונקציות נלוות של Snapshot. (I91f19)
התג
@ComposableContractהוצא משימוש, ועכשיו יש שלוש הערות ספציפיות יותר.@ComposableContract(restartable = false)הפך ל-@NonRestartableComposable@ComposableContract(readonly = true)הפך ל-@ReadOnlyComposable@ComposableContract(preventCapture = true)הפך ל-@DisallowComposableCalls@ComposableContract(tracked = true)הוסר. (I60a9d)הפונקציות emptyContent() ו- (@Composable () -> Unit).orEmpty() הוצאו משימוש כי הן כבר לא משפיעות לטובה על הביצועים או על הערך (I0484d).
snapshotFlowו-withMutableSnapshotכבר לא ניסיוניים (I6a45f)עכשיו אפשר לסגור את כלי ההלחנה מחדש. רכיבי recomposition סגורים ימשיכו לבצע recomposition עד שקורוטינות הצאצא של ה-composition יושלמו. השם של הפונקציה Recomposer.shutDown שונה ל-cancel כדי ליצור ניגוד לפונקציה close. (Ib6d76)
הארטיפקט
compose:runtime-dispatchיצא משימוש. המחלקות MonotonicFrameClock נמצאת עכשיו ב-compose:runtime, והמחלקות AndroidUiDispatcher נמצאת ב-compose:ui. (Ib5c36)ה-API שאליו מכוון פלאגין הקומפיילר של Compose עבר רפקטורינג כדי להשתמש בממשק במקום במחלקה קונקרטית. בנוסף, הממשק לא משתמש יותר בפרמטר מסוג.
זהו שינוי פנימי שלא אמור להשפיע על התאימות של קוד המקור, אבל הוא שינוי בינארי שגורם לשבירה. (I3b922, b/169406779)
נוסף SnapshotMutableState (Icfd03)
השם של DisposableEffectDisposable שונה ל-DisposaleEffectResult (Ica7c6)
הוסר Recomposer.current(). [Abstract]ComposeView now default to lazily created, window-scoped Recomposers driven by the ViewTreeLifecycleOwner for the window. הרה-קומפוזיציה והטיקים של האנימציה שמבוססים על withFrameNanos מושהים בזמן שמחזור החיים של המארח מושהה. (I38e11)
Recomposer.runningRecomposers מספק עכשיו StateFlow גלובלי של RecomposerInfo לקריאה בלבד, כדי לעקוב אחרי מצב הקומפוזיציה בתהליך. מומלץ להשתמש ב-API הזה במקום ב-Recomposer.current(), שהוצא משימוש. (If8ebe)
השם של DisposableEffectDisposable שונה ל-DisposaleEffectResult (I3ea68)
גרסה 1.0.0-alpha11
28 בינואר 2021
androidx.compose.runtime:runtime-*:1.0.0-alpha11 מופץ. גרסה 1.0.0-alpha11 מכילה את השמירות האלה.
שינויים ב-API
- הפונקציות onCommit, onDispose ו-onActive הוצאו משימוש לטובת ממשקי ה-API SideEffect ו-DisposableEffect (If760e)
- הוצאנו משימוש את ה-API emit() ואת כל העומסים העודפים שלו, ושינינו את השם שלו ל-ComposeNode. ממשקי ה-API זהים, רק השם שונה כדי להתאים למוסכמות מתן השמות של Compose (I4137b)
- הפונקציות invalidate ו-compositionReference() הוצאו משימוש, ועכשיו משתמשים בפונקציות currentRecomposeScope ו-rememberCompositionReference בהתאמה. (I583a8)
חשוב לזכור: RememberObserver מחליף את CompositionLifecycleObserver, ו-CompositionLifecycleObserver הוצא משימוש.
RememberObserverהוא תחליף ל-CompositionLifecycleObserverעם סמנטיקה ששונתה ושיטות ששמן שונה. אפשר לעבור ל-API החדש באופן אוטומטי לאובייקטים שזוכרים רק פעם אחת, וזו ההמלצה שלנו. עם זאת, אם הפניה נשמרה יותר מפעם אחת ברכיב, הפונקציהonRememberedמופעלת עבור כל הפניה, בעוד שהפונקציהonEnterמופעלת רק פעם אחת. הפונקציהonEnterנקראה כמה פעמים אם האובייקט שימש בקומפוזיציות משנה, כמוWithConstraintsו-Scaffold, ולכן אי אפשר היה להסתמך על קריאה יחידה שלonEnter. הפונקציה הוסרה ב-RememberObserver.
RememberObserverמוסיף אתonAbandoned, שמופעל אם המופע שלRememberObserverמוחזר מהקריאה החוזרת שהועברה אלremember, אבל לא נשמר במצב הקומפוזיציה ולכן לא תתבצע קריאה ל-onRemembered. זה יכול לקרות אם חריגה מסיימת את ההרכבה לפני שהיא מסתיימת, או אם ההרכבה נפסלת כי המצב שהיא יצרה עבורו הרכבה כבר לא עדכני או כבר לא נחוץ. אם המופע שלRememberObserverאחרי ההמלצה להפניה יחידה שלמעלה עוקב אחרי משאב חיצוני, גםonForgottenוגםonAbandonedמציינים שהמשאב כבר לא נחוץ. אם האובייקט עוקב אחרי עבודה שהתחילה או משאבים שהוקצו ב-onRemembered, אפשר להתעלם מ-onAbandonedכי הוא לא יופעל אםonRememberedיופעל. (I02c36)אל תסמנו פונקציות
collectAsState()כפונקציות מוטבעות (Ia73e4)
תיקוני באגים
- הקומפוזיציה WithConstraints עברה שינוי, נקראת עכשיו BoxWithConstraints והועברה אל foundation.layout. (I9420b, b/173387208)
- שימוש ב-TestCoroutineDispatcher בבדיקות (I532b6)
גרסה 1.0.0-alpha10
13 בינואר 2021
androidx.compose.runtime:runtime-*:1.0.0-alpha10 מופץ. גרסה 1.0.0-alpha10 מכילה את השמירות האלה.
שינוי שעלול לגרום לכשלים
ארגון מחדש של ה-API הפנימי של הקומפיילר מאפשר לאגד שינויים בצמתים שנוצרו כתוצאה מקומפוזיציה בשלב 'החלת שינויים' של הקומפוזיציה, אחרי שכל הפונקציות
@Composableהושלמו.זהו שינוי שעלול לשבור את ההתנהגות של קוד האפליקציה, כי הצמתים לא זמינים יותר מממשקי API פנימיים וניסיוניים עד להחלת השינויים. בדרך כלל אפשר לפתור את הבעיה הזו על ידי הוספת קוד עם תלות כזו ל-
SideEffectcomposable כדי לדחות את ההפעלה של הקוד עד אחרי שהצמתים נוצרו ואותחלו. (I018da)
שינויים ב-API
- נוספה דרך לעקוב אחרי השינויים שבוצעו על ידי הכלי ליצירת קומפוזיציה מחדש. (I1b3e2)
הרחבת ממשקי ה-API של [Abstract]ComposeView כדי לאפשר שימוש חוזר בתצוגות שמבוססות על Compose, השבתת הקומפוזיציה שלהן כדי ליצור אותה מחדש בהמשך. הוספת ממשקי API להתקנה ולגילוי של Recomposers בהיקף חלון ושל CompositionReferences ליצירת קומפוזיציות צאצא.
מוסיפים ViewCompositionStrategy כדי להגדיר את אסטרטגיית הסילוק של [Abstract]ComposeViews; התנהגות ברירת המחדל היא סילוק כשחלון מנותק. (I860ab)
תיקוני באגים
- הכלי Recomposer חושף עכשיו את ה-Flow של המצב הנוכחי שלו, ומאפשר לעקוב אחרי הפעילות שלו ואחרי הפעילות של האפקטים המשויכים. (Ifb2b9)
- עכשיו אפשר לגשת ל-keyEvent המקורי דרך keyEvent.nativeKeyEvent (I87c57, b/173086397)
גרסה 1.0.0-alpha09
16 בדצמבר 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha09 מופץ. גרסה 1.0.0-alpha09 מכילה את השמירות האלה.
שינויים ב-API
הוסרו SlotTable, SlotReader ו-SlotWriter מה-API הציבורי. בעבר הם סומנו כ-InternalComposeAPI. עכשיו הם פנימיים למודול יצירת המוזיקה.
הוספנו את CompositionData ו-CompositionGroup כתחליף ל-ui-tooling API, כדי להשתמש בהם לחילוץ פרטי קומפוזיציה. ממשקי ה-API האלה הם ציבוריים, אבל הם לא מיועדים לשימוש מחוץ ל-ui-tooling API, כי הם מספקים את המידע הגולמי ש-ui-tooling API מפרש (I31a9c)
הכיתה Applier כבר לא נחשבת ל-Id85b0
הממשק של
Applierהשתנה כדי לפשט את בניית העצים מלמטה למעלה במקום מלמעלה למטה.השם של ה-method
insert()השתנה ל-insertTopDown().נוספה שיטה חדשה,
insertBottomUp().ממשק החלה מוסיף צמתים לעץ שהוא עורך באמצעות
insertTopDown()אוinsertBottomUp(), בהתאם למה שמניב ביצועים טובים יותר.יעיל יותר לבנות חלק מהעצים, כמו
LayoutNodeו-View, מלמטה למעלה ולא מלמעלה למטה. לפני השינוי הזה, היה צריך להשתמש במערך של תוספים כדי להטמיע בנייה מלמטה למעלה, והיה צריך להעתיק את המערך לכל כלי שנדרשה בו בנייה מלמטה למעלה כדי לשפר את הביצועים. בעקבות השינוי הזה,Applierמחליף אתinsertBottomUp()כדי ליצור עץ מלמטה למעלה, ו-insertTopDown()מחליף את כדי ליצור עץ מלמעלה למטה. (Icbdc2)Compose תומך בשיטות getter של מאפיינים שיכולות לבצע קריאות לרכיבים קומפוזביליים. התמיכה בזה לא תבוטל, אבל התחביר להצהרה על getter של מאפיין כ-@Composable ישתנה.
התחביר שהוצא משימוש לביצוע הפעולה הזו היה באמצעות הוספת הערה לנכס עצמו:
@Composable val someProperty: Int get() = ...התחביר הנכון לביצוע הפעולה הזו הוא באמצעות הערה של ה-getter של המאפיין:
val someProperty: Int @Composable get() = ...שני סוגי התחביר יפעלו למשך זמן מסוים, אבל בסופו של דבר תחביר מיושן מהסוג הראשון יהפוך לשגיאת קומפילציה. (Id9197)
תיקוני באגים
- AndroidOwner made internal (Ibcad0, b/170296980)
- הפונקציה subcomposeInto(LayoutNode) הפכה לפנימית (Id724a)
גרסה 1.0.0-alpha08
2 בדצמבר 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha08 מופץ. גרסה 1.0.0-alpha08 מכילה את השמירות האלה.
שינויים ב-API
- נוספה בדיקת Lint לשמות ולמיקום של פרמטרים של lambda שניתנים להרכבה, כדי לבדוק את העקביות עם ההנחיות של Compose.
בנוסף, העברנו חלק מממשקי ה-API באמצעות
childrenכשם של פונקציית ה-lambda האחרונה שלהם אלcontent, בהתאם לבדיקת ה-lint ולהנחיות. (Iec48e) - Recomposer לא מקבל יותר EmbeddingContext. יחסי התלות הנדרשים בתזמון מתקבלים מ-effectCoroutineContext. ה-API FrameManager הוצא משימוש. שילובים של פלטפורמות צריכים לאתחל את הטיפול בתמונת המצב הגלובלית שלהם. (I02369)
- הפונקציה RestorableStateHolder.withRestorableState קיבלה את השם החדש RestorableStateProvider (I66640)
תיקוני באגים
- הוצאנו משימוש את המאפיינים מסוג Ambient ששם המחלקה שלהם מסתיים ב-
Ambient, והחלפנו אותם במאפיינים חדשים ששם המחלקה שלהם מתחיל ב-Ambient, בהתאם להנחיות לגבי מאפיינים מסוג Ambient ולגבי Compose API. (I33440) - הסרה של המודול הישן ui-test וה-stub שלו (I3a7cb)
גרסה 1.0.0-alpha07
11 בנובמבר 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha07 מופץ. גרסה 1.0.0-alpha07 מכילה את השמירות האלה.
תכונות חדשות
שינויים ב-API
- ההערה
@UnionTypeהוצאה משימוש (I57cde) - הפונקציה provideDefault נוספה כחלופה לפונקציה provide לצורך אספקת ערכים של מאפיינים סביבתיים. אפשר להשתמש בה כדי לציין ערכים של מאפיינים סביבתיים שיוגדרו רק אם לא סופק כבר ערך של מאפיין סביבתי. (Id6635, b/171024925)
- השם של LaunchedTask שונה ל-LaunchedEffect כדי לשמור על עקביות עם ממשקי ה-API SideEffect ו-DisposableEffect. כדי לעודד שימוש בשיטות מומלצות, אסור להפעיל את LaunchedEffect בלי פרמטרים של נושא. (Ifd3d4)
- ל-Applier יש עכשיו קריאות חוזרות (callbacks) מסוג onBeginChanges/onEndChanges שמופעלות כש-Composer מתחיל להחיל שינויים על העץ או מסיים את התהליך. יכול להיות שיהיה צורך להשתמש בהם כדי לנהל משאבים בקבוצות. (Icf476)
- החל מעכשיו, Recomposer דורש CoroutineContext בזמן הבנייה (Ic4610)
- שינויים בהטמעה הפנימית של SlotTable שלא אמורים להשפיע על ה-API הציבורי. (If9828)
- הוסרו מתאמי rxjava2 שהוצאו משימוש ולא מקבלים את הערך ההתחלתי (Idb72f)
תיקוני באגים
- המאפיין foundation.Text הוצא משימוש והוחלף במאפיין material.Text. אם אתם מחפשים API בסיסי לטקסט שלא משתמש בערכים מתוך Theme, כדאי לעיין ב-androidx.compose.foundation.BasicText. (If64cb)
- הוצאנו משימוש את BaseTextField. במקום זאת, משתמשים ב-BasicTextField. (I896eb)
- כמה סמלים שקשורים לפריסה הועברו מ-androidx.compose.ui אל androidx.compose.layout.ui. (I0fa98, b/170475424)
External Contribution
- נוסף מודול
runtime-rxjava3לכתיבת הודעות. דומה לruntime-rxjava2(I02cbf)
גרסה 1.0.0-alpha06
28 באוקטובר 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha06 מופץ. גרסה 1.0.0-alpha06 מכילה את השמירות האלה.
שינויים ב-API
- הקומפוזיציה מוגדרת עכשיו כ-CompositionReference וכקומפוזיציית אב תקפה. השימוש ב-Explicit Recomposer נדרש עכשיו בפחות מקומות. (I4036f)
- נוסף API מקביל של DisposableEffect ל-SideEffect, שממלא את התפקיד של onCommit-with-params אבל עם onDispose נדרש.
- נוסף rememberUpdatedState API לפרסום נתונים מ-רה-קומפוזיציה לתהליכים מתמשכים או ארוכי טווח, כמו DisposableEffects או LaunchedTasks.
- (Id50b9)
- המחלקות MutableVector מיישמות עכשיו את RandomAccess (I85d73, b/170461551)
- נוסף קומפוזיציה מסוג SideEffect להחלת תופעות לוואי של קומפוזיציה על אובייקטים שמנוהלים על ידי הקומפוזיציה. ה-composable SideEffect נועד להחליף את ה-composable onCommit. (Ia77c2)
- API ניסיוני חדש: RestorableStateHolder. הוא מאפשר לשמור את המצב שהוגדר באמצעות [savedInstanceState] ו-[rememberSavedInstanceState] עבור עץ המשנה לפני השחרור שלו, כדי לאפשר את ההרכבה שלו מחדש בפעם הבאה עם המצב המשוחזר. (I66884, b/166586419)
תיקוני באגים
- הפעלת מעברים ב-ComposeTestRule; הסרת האפשרות להפעיל את הסמן המהבהב מ-ComposeTestRule. (If0de3)
גרסה 1.0.0-alpha05
14 באוקטובר 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha05 מופץ. גרסה 1.0.0-alpha05 מכילה את השמירות האלה.
שינויים ב-API
- התאמה ניסיונית.התאמה של קלט להשהיית קלט של מצביע (Ia77d2)
- הביצועים של LazyColumn/Row בגלגול משופרים על ידי צמצום העבודה בהרכב משנה בכל גלגול. נוספה השיטה החדשה hasInvalidations() למחלקה Composition. השיטה hasPendingChanges() מ-Recomposer שונתה ל-hasInvalidations() (Ib2f32, b/168293643, b/167972292, b/165028371)
- הוספנו את produceState API להפעלת קורוטינות מקומפוזיציה
שמעדכנות ערך יחיד של
State<T>לאורך זמן (Id4a57) - השם של launchInComposition שונה ל-LaunchedTask כדי להתאים להנחיות של Compose API (I99a8e)
- הסדר של קריאות place() בפריסות בהתאמה אישית מגדיר עכשיו את סדר הציור של הצאצאים (Ibc9f6)
גרסה 1.0.0-alpha04
1 באוקטובר 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha04 מופץ. גרסה 1.0.0-alpha04 מכילה את השמירות האלה.
שינויים ב-API
- הוספנו את OwnerScope כדי לאפשר איסוף של היקפי תצפית על פריסות וציורים אחרי שהם כבר לא תקפים. (Ic4cf8)
- נוסף API של derivedStateOf ליצירת אובייקטים של State על סמך חישוב שיכול לקרוא (ולגזור) אובייקטים אחרים של State (If758b)
- נוסף TestOnly API ל-SnapshotStateObserver (I6e2a9)
תיקוני באגים
- הפונקציה foundation.Box הוצאה משימוש. במקומו צריך להשתמש ב-foundation.layout.Box. (Ie5950, b/167680279)
גרסה 1.0.0-alpha03
16 בספטמבר 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha03 מופץ. גרסה 1.0.0-alpha03 מכילה את השמירות האלה.
שינויים ב-API
- האפליקציה
CompositionCoroutineScopeלא מטמיעה יותר אתMonotonicFrameClock. מתקשרים שלwithFrameNanosצריכים לייבא את הפונקציה ברמה העליונה באופן מפורש. (Icb642, b/166778123)
תיקוני באגים
- הפונקציות הגלובליות לבדיקה, כמו
onNodeאוwaitForIdle, הוצאו משימוש. צריך לעבור לחלופות החדשות שלהן שמוגדרות ב-ComposeTestRule (I7f45a) -
launchInCompositionכבר לא מפעיל קורוטינות שלא נשלחו (Ief6af, b/166486000)
גרסה 1.0.0-alpha02
2 בספטמבר 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha02 מופץ. גרסה 1.0.0-alpha02 מכילה את השמירות האלה.
שינויים ב-API
- הוספת ממשקי API של
snapshotFlowו-withMutableSnapshotלצריכה וליצירה של שינויים בנתוני תמונת המצב. (I3e722) השתנה מוסכמת הקריאה לפונקציות הניתנות להגדרה. זהו שינוי בינארי שגורם לבעיות. צריך לקמפל מחדש את כל הספריות כדי שהן יפעלו עם הגרסה הזו של תוסף הקומפיילר של Compose.
השינוי הזה לא יוצר שינוי שובר תאימות ברמת המקור, כי ממשקי ה-API היחידים שהשתנו הם ממשקי API של קומפיילר שנדרשת בהם הסכמה מפורשת. (I7afd2, b/158123185)
הוסרו שיטות תזמון מ-EmbeddingContext (I7b9be)
הפונקציה onPreCommit הוצאה משימוש. עכשיו הפונקציה onCommit מתנהגת כמו onPreCommit.
הפונקציות onCommit ו-onActive פועלות עכשיו באותו פריים של כוריאוגרפיה שבו השינויים בהרכב בוצעו, ולא בתחילת הפריים הבא של הכוריאוגרפיה. (I70403)
גרסה 1.0.0-alpha01
26 באוגוסט 2020
androidx.compose.runtime:runtime-*:1.0.0-alpha01 מופץ. גרסה 1.0.0-alpha01 מכילה את השמירות האלה.
גרסה 0.1.0-dev
גרסה 0.1.0-dev17
19 באוגוסט 2020
androidx.compose.runtime:runtime-*:0.1.0-dev17 מופץ. גרסה 0.1.0-dev17 מכילה את השמירות האלה.
שינויים ב-API
- עכשיו אפשר להצהיר על פונקציות setter מותאמות אישית שאפשר לדלג עליהן ולבצע קומפוזיציה מחדש באופן עצמאי, בלי קשר לפונקציית ה-emit. (Ibbd13)
הוסרו קריאות (calls) ל-FrameManager שיצאו משימוש.
בוצעו שינויים בממשקי API פנימיים של Compose כדי לצמצם את התקורה של מעקב אחרי אובייקטים של מצב כמו
mutableStateof()(I80ba6)הקומפוזיציה
state { ... }יצאה משימוש, ועכשיו משתמשים בקריאות מפורשות ל-remember { mutableStateOf(...) }כדי לשפר את הבהירות. השינוי הזה מצמצם את שטח הפנים הכולל של ה-API ואת מספר המושגים לניהול מצב, והוא תואם לתבניתby mutableStateOf()של הקצאת מאפייני מחלקה. (Ia5727)הפונקציה Flow.collectAsState קובעת עכשיו את ברירת המחדל של ה-dispatcher מתוך הקומפוזיציה עצמה, במקום להשתמש ב-Dispatchers.Main כברירת מחדל. (I9c1d9)
תוקנה קריסה שקורית כשמשתמשים בלולאת for במשהו ששומר את המצב. עכשיו מותר להשתמש באותו מפתח ב-savedInstanceState(), ה-API של UiSavedStateRegistry מותאם עכשיו לדרישה החדשה הזו (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561)
תיקוני באגים
- התכונה
emitViewהוצאה משימוש. אם אפשר, השתמשו ב-AndroidViewבמקום כדי להפעיל Views בתוך Compose. שימו לב שבעתיד לא תהיה תמיכה בהוספה ישירה של רכיבי View ו-ViewGroup, אלא אם הם רכיבי עלים בעץ ההיררכיה של הקומפוזיציה. במקרה כזה, אפשר להשתמש ב-AndroidView. (I29b1e, b/163871221)
גרסה 0.1.0-dev16
5 באוגוסט 2020
androidx.compose.runtime:runtime-*:0.1.0-dev16 מופץ. גרסה 0.1.0-dev16 מכילה את השמירות האלה.
שינויים ב-API
מדיניות השינוי שמוגדרת כברירת מחדל ב-
mutableStateOf(), ב-ambientOf()וב-savedInstanceStateOf()השתנתה מ-referentialEqualityPolicy()ל-structuralEqualityPolicy().ברירת המחדל להחלטה אם ערך חדש שמוקצה למופע של
mutableStateOf()נחשב לשינוי היא עכשיו שימוש ב-==במקום ב-===.פרטים נוספים זמינים בכתובת https://kotlinlang.org/docs/reference/equality.html
ambientOf()ו-savedInstanceStateOf()משתמשים ב-mutableStateOf()בהטמעות שלהם, ולכן הם שונו כדי להיות עקביים עםmutableStateOf().שימוש בשוויון מבני תואם יותר לציפיות של המפתחים.
לדוגמה,
val state = mutableStateOf(1f)ואחריו
state.value = 1fלא ייחשב יותר כשינוי ב-
state, ולא יהיה צורך יותר ליצור מחדש את השימוש ב-stateבמהלך הכתיבה.זהו שינוי שעלול לשבור את התאימות לאחור, אבל ברוב המקרים (למשל כשמשתמשים במחלקות שלא מבטלות את
equals()), לא תהיה לו השפעה ניכרת על אפליקציה.יכול להיות שיהיה שיפור בביצועים של מחלקות שמבצעות החלפה של
equals(), כמו מחלקותdata, כי ה-methods שלequals()נקראים עכשיו כברירת מחדל כשהם מוקצים ל-mutableStateOf().כדי לשחזר את ההתנהגות הקודמת, צריך להוסיף את פרמטר המדיניות
policy = referentialEqualityPolicy()לקריאות אלmutableStateOf(),ambientOf()ו-savedInstanceStateOf(). (Ic21a7)
Rowו-Columnהן עכשיו פונקציות מוטמעות, מה שמפחית באופן משמעותי את התקורה של השימוש בהן. (I75c10)
תיקוני באגים
- הפונקציה setViewContent הוצאה משימוש. במקומה צריך להשתמש בפונקציה setContent. (I7e497, b/160335130)
נוסף MonotonicFrameAnimationClock שמאפשר להשתמש ב-MonotonicFrameClock כ-AnimationClockObservable כדי לגשר על הפער בין השעונים החדשים שמבוססים על קורוטינות לבין ממשקי API שעדיין משתמשים בשעונים הישנים שמבוססים על קריאות חוזרות (callback).
הגרסה המקבילה של ManualAnimationClock ב-MonotonicFrameClock היא עכשיו ManualFrameClock. (I111c7, b/161247083)
הפונקציה Modifier.stateDraggable עברה שינוי משמעותי ושמה שונה ל-Modifier.swipeable. נוספה מחלקה חדשה בשם SwipeableState, והמחלקה DrawerState והמחלקה BottomDrawerState עברו רפקטורינג כדי לרשת ממנה. [Modal/Bottom]DrawerLayout לא מקבל יותר פרמטר onStateChange. (I72332, b/148023068)
הפונקציה Modifier.plus הוצאה משימוש. במקומה צריך להשתמש בפונקציה Modifier.then. השימוש במילה 'ואז' מעביר מסר חזק יותר לגבי הסדר, וגם אוסר על הקלדת
Modifier.padding().background() + anotherModifier, מה ששובר את השרשרת ומקשה על הקריאה (Iedd58, b/161529964)הקומפוננטה SubcomposeLayout נוספה. זהו פרימיטיב ברמה נמוכה שמאפשר להרכיב את הצאצאים במהלך המדידה, אם רוצים להשתמש בערכים שזמינים רק מאוחר יותר במהלך המדידה להרכבת עץ המשנה. לדוגמה, WithConstraints לא מיושם באמצעות SubcomposeLayout. (I25cc8)
השם של רכיב Material FilledTextField שונה ל-TextField, והשם של רכיב TextField הבסיסי שונה ל-BaseTextField, כדי שיהיה קל יותר למצוא את ה-API הרצוי הפשוט ביותר ולהשתמש בו (Ia6242, b/155482676).
השם של Modifier.drawBackground שונה ל-Modifier.background (I13677)
גרסה 0.1.0-dev15
22 ביולי 2020
androidx.compose.runtime:runtime-*:0.1.0-dev15 מופץ. גרסה 0.1.0-dev15 מכילה את השמירות האלה.
עדכון פניות קשורות
- כדי להשתמש בגרסה
0.1.0-dev15של Compose, צריך לעדכן את יחסי התלות בהתאם לקטעי הקוד החדשים שמוצגים למעלה בקטע הצהרה על יחסי תלות.
שינויים ב-API
ההערה
@Modelהוצאה משימוש. אפשר להשתמש ב-state וב-mutableStateOf כחלופות. ההחלטה להוציא משימוש את התכונה הזו התקבלה אחרי דיונים מעמיקים.הצדקה
ההסבר כולל, בין היתר:
- מצמצם את שטח הפנים של ה-API ואת המושגים שאנחנו צריכים ללמד
- התאמה טובה יותר לערכות כלים דומות אחרות (Swift UI, React, Flutter)
- החלטה הפיכה. תמיד אפשר להחזיר את
@Modelבהמשך. - הסרת מקרים מיוחדים של שימוש ושאלות קשות לגבי הגדרת
@Modelכדברים שאנחנו צריכים לטפל בהם - מחלקות נתונים
@Model, equals, hashcode וכו'. - איך אפשר להגדיר שחלק מהנכסים יהיו במצב 'במעקב' וחלק לא?
- איך מציינים אם להשתמש בשוויון מבני או בשוויון של הפניה בתצפית?
- מפחית את ה'קסם' במערכת. יקטין את הסיכוי שמישהו יניח שהמערכת חכמה יותר ממה שהיא (כלומר, שהיא יודעת להשוות בין רשימות)
- הופך את רמת הפירוט של התצפית לאינטואיטיבית יותר.
- משפר את האפשרות לבצע רפקטורינג ממשתנה -> מאפיין במחלקה
- יכול להיות שיהיו אפשרויות לאופטימיזציות ספציפיות למדינה שנעשות באופן ידני
- ההתאמה קרובה יותר לשאר המערכת האקולוגית ומפחיתה את העמימות לגבי מצב בלתי ניתן לשינוי או לגבי "אימוץ מצב ניתן לשינוי"
הערות לגבי העברה
כמעט כל השימושים הקיימים ב-
@Modelניתנים לשינוי בקלות יחסית באחת משתי דרכים. בדוגמה שלמטה יש מחלקה@Modelעם שני מאפיינים רק לצורך הדוגמה, והיא נמצאת בשימוש בקומפוזיציה.@Model class Position( var x: Int, var y: Int ) @Composable fun Example() { var p = remember { Position(0, 0) } PositionChanger( position=p, onXChange={ p.x = it } onYChange={ p.y = it } ) }חלופה 1: משתמשים בפקודה
State<OriginalClass>ויוצרים עותקים.הגישה הזו קלה יותר לשימוש עם מחלקות נתונים של Kotlin. בעצם, צריך להפוך את כל מאפייני
varהקודמים למאפייניvalשל מחלקת נתונים, ואז להשתמש ב-stateבמקום ב-remember, ולהקצות את ערך המצב לעותקים משוכפלים של המקור באמצעות שיטת הנוחותcopy(...)של מחלקת הנתונים.חשוב לציין שהגישה הזו פועלת רק אם השינויים שבוצעו במחלקה הזו נעשו באותו היקף שבו נוצר המופע
State. אם המחלקה משנה את עצמה באופן פנימי מחוץ להיקף השימוש, ואתם מסתמכים על התצפית הזו, כדאי להשתמש בגישה הבאה.data class Position( val x: Int, val y: Int ) @Composable fun Example() { var p by state { Position(0, 0) } PositionChanger( position=p, onXChange={ p = p.copy(x=it) } onYChange={ p = p.copy(y=it) } ) }חלופה 2: שימוש ב-mutableStateOf ובנציגי מאפיינים
הגישה הזו פשוטה יותר בזכות נציגי המאפיינים של Kotlin ו-
mutableStateOfAPI, שמאפשרים ליצור מופעים של MutableState מחוץ לקומפוזיציה. בעצם, מחליפים את כל המאפייניםvarשל המחלקה המקורית במאפייניםvarעםmutableStateOfכנציג המאפיין שלהם. היתרון הוא שהשימוש בכיתה לא ישתנה בכלל, רק ההטמעה הפנימית שלה. ההתנהגות לא זהה לחלוטין לדוגמה המקורית, כי כל נכס נצפה או נרשם אליו בנפרד, ולכן יכול להיות שהקומפוזיציות מחדש שיוצגו אחרי השינוי הזה יהיו מצומצמות יותר (וזה טוב).class Position(x: Int, y: Int) { var x by mutableStateOf(x) var y by mutableStateOf(y) } // source of Example is identical to original @Composable fun Example() { var p = remember { Position(0, 0) } PositionChanger( position=p, onXChange={ p.x = it } onYChange={ p.y = it } ) }(I409e8, b/152050010, b/146362815, b/146342522, b/143413369, b/135715219, b/143263925, b/139653744)
שינוי אסטרטגיית יצירת הקוד של מהדר Compose. לפני השינוי, מהדר ה-Compose היה משנה קריאות לפונקציות שניתנות להרכבה. בעקבות השינוי הזה, אנחנו עכשיו משנים את הגוף של פונקציה קומפוזבילית, ומשאירים את מיקום הקריאה ללא שינוי (ברוב המקרים).
המשמעות היא שרוב הלוגיקה שמתקשרת עם זמן הריצה של הכתיבה מתרחשת בתחילת גוף הפונקציה, במקום במיקום הקריאה.
השינוי הזה אמור להיות תואם למקור בכל השימושים ב-Compose. רוב המשתמשים ב-Compose לא צריכים לעדכן קוד כתוצאה מהשינוי הזה.
כדי לתמוך בעבודה הזו, חתימת ה-JVM של כל הפונקציות שניתנות להרכבה השתנתה. פונקציה קומפוזבילית שמקבלת פרמטר יחיד הופכת לפונקציה שמקבלת 3 פרמטרים. הפרמטרים הנוספים הם Composer, מספר שלם מסוג 'key' ומספר שלם מסוג bitmask שמשמש להעברת מטא-נתונים באמצעות קריאות.
Compose גם הופכת עכשיו ארגומנטים שמוגדרים כברירת מחדל לפונקציה קומפוזבילית. הפעולה הזו מתבצעת בלי להוסיף עומס יתר של ברירת מחדל סינתטית לפונקציה עצמה, ולכן השינוי הזה יגרום להגדרת פחות פונקציות.
אלה שינויים התנהגותיים מכוונים שנובעים מהעדכון הזה:
- חלק מהשיחות ידלגו על שלבים שלא היו מדלגות עליהם בעבר
- ביטויים שניתנים להרכבה בביטויי ארגומנטים שמוגדרים כברירת מחדל מטופלים עכשיו בצורה נכונה
העבודה הזו כללה כמה אופטימיזציות: 1. התוצאה של השוואות בין פרמטרים מועברת דרך גרף הקריאות לפונקציות אחרות שניתנות להרכבה. התוצאה היא פחות השוואות בזמן הריצה, צמצום הגודל של טבלת המשבצות ודילוג על יותר פונקציות שאפשר להרכיב שלא היה עליהן דילוג קודם 2. פרמטרים שנקבע שהם 'סטטיים' בזמן ההידור לא מושווים יותר ולא מאוחסנים בזמן הריצה. כך מצמצמים את מספר ההשוואות ואת גודל טבלת המשבצות. 3. מבנה בקרת הזרימה של גוף הפונקציות משמש לצמצום מספר הקבוצות שנוצרות. הפעולה הזו מקטינה את הגודל של טבלת המשבצות ומפחיתה את העבודה של זמן הריצה 4. פרמטרים של שליחה וקבלה שלא נעשה בהם שימוש בפונקציות לא נכללים בקביעת האפשרות לדלג על הפונקציה אם לא נעשה בהם שימוש בגוף הפונקציה.
רוב השינויים שגורמים לבעיות תאימות הם ב-API שהקומפיילר מכוון אליו ישירות, והשימוש הרגיל ב-Compose לא יושפע: 1. Composer::startExpr הוסר 2. Composer::endExpr הוסר 3. Composer::call הוצא משימוש 4. העומסים העודפים שאינם varargs של
keyהוסרו. להשתמש בגרסהvarargמעכשיו והלאה. 5. ההערה Pivotal הוצאה משימוש. אפשר להשתמש ב-keyבמקום. 6. הפונקציה ScopeUpdateScope::updateScope שונתה כך שהיא מצפה ל-Function3 במקום ל-Function1 7. הפונקציות restartableFunction ו-restartableFunctionN עודכנו כך שיכללו פרמטרים נוספים של זמן קומפילציה (I60756, b/143464846)נוספו sortWith ו-removeRange ל-MutableVector (Icccf7)
נוספו הטמעות של שיטות ברירת מחדל עבור CompositionLifecycleObserver (I24289)
הכלי Applier דורש עכשיו שימוש בשיטה clear() כדי להשמיד קומפוזיציות (Ibe697)
הפונקציה asMutableList() נוספה ל-MutableVector כדי לאפשר לה לעבור ל-API ציבורי בלי להעתיק את כל הרשימה. (I298df)
נוספה הפונקציה rememberCoroutineScope() כדי לקבל CoroutineScope מנוהל בקומפוזיציה להפעלת משימות בתגובה לאירועים. (I0e264)
MutableVector הוא אוסף חדש שלא מיישם אף אחד מממשקי האוסף הרגילים. האוסף הזה מציע מהירות מעל הדרישות האחרות והוא מיועד לשימוש רק בהטמעות פנימיות. (I8ebd6)
הסרנו באופן זמני את
StableMutableListואתStableMutableMapכדי למנוע בעיה בגרסה של Kotlin Compose שנדרשת. הממשקים האלה יחזרו כש-Compose יעודכן לגרסה של Kotlin שבה הבעיה לא קיימת.השיטות
SnapshotStateListו-SnapshotStateMapגלויות לכולם עכשיו, אבל הן יוצאו משימוש אחרי ש-StableMutableListו-StableMutableMapישוחזרו. (Ia7769)הוספת הפונקציה withFrameNanos ברמה העליונה לתזמון אנימציה (Ie34c5)
ההערה @Untracked הוצאה משימוש. החלפה עם @ComposableContract(tracked=false) (Id211e)
השמות של RestartableFunction וממשקי ה-API המשויכים שונו ל-ComposableLambda וכו'. ממשקי ה-API האלה טירגטו רק על ידי הקומפיילר, ולכן השינוי הזה לא אמור להשפיע על התאימות ברמת המקור בדרך כלל. השינוי בשם נעשה בעיקר כדי להבהיר טוב יותר מהו הסיווג הזה כשהוא מופיע במעקב אחר מחסנית (I7eb25)
ההערה @Composable כבר לא תקפה לגבי מחלקות (Ia5f02)
Ambient<T>is now @Stable instead of @Immutable (I0b4bb)לפני השינוי הזה, פלאגין הקומפיילר של Compose היה מיירט באופן לא טריוויאלי קריאות ל-constructors בתוך פונקציית @Composable אם היה (I5205a, b/158123804)
הקומפוזיציה Recompose כבר לא מהווה הפשטה שימושית. רוב הרה-קומפוזיציה צריכה לקרות כתוצאה מהקצאות של MutableState. לכל דבר אחר, מומלץ להשתמש בפונקציה
invalidateכדי להפעיל יצירה מחדש של ההיקף הנוכחי. (Ifc992)ההפשטה Observe כבר לא שימושית. אם אתם צריכים לשכפל אותה, אפשר לשכפל את ההטמעה שלה פשוט על ידי יצירת פונקציה הניתנת להגדרה שמבצעת פרמטר lambda הניתן להגדרה. לדוגמה,
@Composable fun Observe(body: @Composable () -> Unit) = body()(I40d37)ההערה @Direct הוצאה משימוש לטובת @ComposableContract(restartable=false) (If4708)
הוספנו מתאם ל-StateFlow שהוצג לאחרונה, שמאפשר לנו לאכלס מראש את הערך הראשוני כדי שהמצב שמוחזר לא יהיה ניתן לאיפוס (I61dd8, b/156233789)
נוסף מתאם ל-Flow. דוגמה לשימוש: val value by flow.collectAsState() (If2198, b/153375923)
[Mutable]אופרטורים של נציגי מאפיינים של מצב הועברו לתוספים כדי לתמוך באופטימיזציות של נציגי מאפיינים ב-Kotlin 1.4. כדי להמשיך להשתמש ב-
by state { ... }או ב-by mutableStateOf(...), המתקשרים צריכים להוסיף ייבוא. (I5312c)androidx.compose.ViewComposer הועבר אל androidx.ui.node.UiComposer androidx.compose.Emittable הוסר. הוא היה מיותר כי יש את ComponentNode. הספרייה androidx.compose.ViewAdapters הוסרה. הם כבר לא תרחיש שימוש נתמך. הפונקציה Compose.composeInto הוצאה משימוש. במקומה, צריך להשתמש ב-
setContentאו ב-setViewContent. הפונקציה Compose.disposeComposition יצאה משימוש. במקום זאת, צריך להשתמש בשיטהdisposeב-Compositionשמוחזרת על ידיsetContent. השיטה androidx.compose.Compose.subcomposeInto הועברה אל androidx.ui.core.subcomposeInto השם של השיטה ComponentNode#emitInsertAt שונה ל-ComponentNode#insertAt השם של השיטה ComponentNode#emitRemoveAt שונה ל-ComponentNode#removeAt השם של השיטה ComponentNode#emitMode שונה ל-ComponentNode#move (Idef00)הדגל
ComposeFlags.COMPOSER_PARAMעודכן ל-true, מה שישנה את אסטרטגיית יצירת הקוד לתוסף הכתיבה. ברמה גבוהה, הפעולה הזו גורמת ליצירה של פונקציות @Composable עם פרמטר סינתטי נוסף, שמועבר לקריאות הבאות של @Composable כדי שסביבת זמן הריצה תוכל לנהל את הביצוע בצורה תקינה. זהו שינוי משמעותי שגורם לשבירת תאימות בינארית, אבל הוא אמור לשמור על תאימות ברמת המקור בכל השימושים המאושרים של Compose. (I7971c)שינויים בתוכנה שעלולים לגרום לכשלים ב-API של מצב אווירה. פרטים נוספים מופיעים ביומן ובמסמכי התיעוד של
Ambient<T>(I4c7ee, b/143769776)נוסף ui-livedata – ארטיפקט חדש עם מתאם ל-LiveData. דוגמה לשימוש: val value by liveData.observeAsState() (Ie9e8c, b/150465596)
השימוש במתאמי Rx ללא ערך התחלתי מפורש הוצא משימוש. שימוש בערך null לא תמיד מומלץ כברירת מחדל. לדוגמה, אם יש לכם רשימה, עדיף להתחיל עם emptyList() או עם ברירת מחדל סבירה אחרת (I00025, b/161348384)
נוסף ui-rxjava2 – ארטיפקט חדש עם מתאמים ל-RxJava2. דוגמה לשימוש: val value by observable.subscribeAsState() (Ifab4b, b/153369097)
אפשר עכשיו להשתמש ב-
savedInstanceState()עם סוגים שניתנים לאיפוס (I6847f, b/153532190)נוספו הפונקציות listSaver() ו-mapSaver() כדי להקל על כתיבת אובייקטים מותאמים אישית של Saver (I8cf68, b/152331508)
פונקציות חדשות: savedInstanceState() ו-rememberSavedInstanceState(). הן דומות ל-state() ול-remember(), אבל יש להן תמיכה מובנית במצב של מופע שנשמר (If1987, b/152025209)
תיקוני באגים
- השם של
runOnIdleComposeשונה לrunOnIdle(I83607) - הפכנו את LayoutNode ל-API ניסיוני (I4f2e9)
- השימוש ב-androidx.ui.foundation.TextFieldValue וב-androidx.ui.input.EditorValue הוצא משימוש. גם רכיבי ה-TextField, FilledTextField ו-CoreTextField הניתנים להרכבה שמשתמשים בסוג הזה הוצאו משימוש. במקומו, אפשר להשתמש ב-androidx.ui.input.TextFieldValue (I4066d, b/155211005)
- הוסר DrawBackground API שהוצא משימוש לטובת drawBackground extension APIs ב-Modifier. בוצע רפקטורינג של ההטמעות של color, brush ו-paint drawBackground כדי לצמצם את נתיבי הקוד וגם כדי להסיר את הדרישה ליצירת Modifier כחלק מהקומפוזיציה. (I0343a)
- ממשקי API ברמה גבוהה יותר של Compose עודכנו כך שהם חושפים CanvasScope במקום Canvas. כך הצרכנים לא צריכים לתחזק אובייקטים משלהם של Paint. צרכנים שעדיין צריכים גישה ל-Canvas יכולים להשתמש בשיטה drawCanvas של התוסף, שמספקת קריאה חוזרת להנפקת פקודות ציור עם ה-Canvas הבסיסי. (I80afd)
- בוצע שינוי ב-API של lambda עם Constraints trailing. עכשיו, במקום שני פרמטרים, יש לו היקף של מקבל, שבנוסף למגבלות ול-layoutDirection מספק את המאפיינים minWidth, maxWidth, minHeight ו-maxHeight ב-Dp (I91b9a, b/149979702)
- נוסף משנה של מרווח פנימי סימטרי. (I39840)
- הפונקציות wrapContentWidth ו-wrapContentHeight עודכנו כך שהן מצפות ליישור אנכי או אופקי ולא ליישור כלשהו. העדכון של משנה הגרביטציה מאפשר יישור אנכי או אופקי. העדכונים שבוצעו ברכיבים Row, Column ו-Stack מאפשרים להגדיר יישור רציף בהתאמה אישית. (Ib0728)
- השם של מודול ui-text שונה ל-ui-text-core (I57dec)
- שיפור DrawModifier API:
- הגדרתי את היקף המקבל של draw() כ-ContentDrawScope
- הסרת כל הפרמטרים ב-draw()
- ל-DrawScope יש את אותו ממשק כמו ל-CanvasScope הקודם
- ל-ContentDrawScope יש שיטה drawContent() (Ibaced, b/152919067)
- התכונה ColoredRect הוצאה משימוש. במקומה, צריך להשתמש ב-method
Box(Modifier.preferredSize(width, height).drawBackground(color)). (I499fa, b/152753731) - הוחלף Modifier plus operator בפונקציות של תוסף factory (I225e4)
- מעכשיו אפשר לגשת לחברים ב-RowScope וב-ColumnScope מחוץ ל-Row ול-Column. (I3a641)
- השם של הפריסה LayoutFlexible שונה ל-LayoutWeight. השם של הפרמטר tight שונה ל-fill. (If4738)
- הפרמטר LayoutDirection נוסף ל-WithConstraints (I6d6f7)
- שינוי השם של הרקע ל-DrawBackground והגדרת זיכרון כברירת מחדל (Ia0bd3)
- החלפנו את ButtonStyle בפונקציות נפרדות והסרנו את העומס של טקסט (מחרוזת). אפשר לעיין בדוגמאות המעודכנות כדי לקבל מידע על השימוש. (If63ab, b/146478620, b/146482131)
- הפונקציות
runOnIdleComposeו-runOnUiThreadהן עכשיו פונקציות גלובליות ולא שיטות ב-ComposeTestRule. (Icbe8f)
External Contribution
- הסרה של API מיותר כמו Looper ו-Handler משכבת ההעברה של Compose Runtime (I6847d)
- הוצאה משימוש של
Flow<T>.collectAsState()ללא ערך ראשוני. במקום זאת, צריך להשתמש ב-StateFlow<T>או להעביר ערך התחלתי מפורש. (I63f98, b/157674865)