מחזור חיים
בטבלה הזו מפורטים כל הארטיפקטים בקבוצה androidx.lifecycle.
| פריט מידע שנוצר בתהליך פיתוח (Artifact) | גרסה יציבה | גרסה מועמדת להפצה | גרסת בטא | גרסת אלפא |
|---|---|---|---|---|
| lifecycle-* | 2.11.0 | - | - | - |
| lifecycle-viewmodel-navigation3 | 2.11.0 | - | - | - |
הצהרה על יחסי תלות
כדי להוסיף תלות ב-Lifecycle, צריך להוסיף את מאגר Maven של Google לפרויקט. מידע נוסף זמין במאמר בנושא מאגר Maven של Google.
אתם יכולים להוסיף את יחסי התלות של הארטיפקטים שאתם צריכים בקובץ build.gradle של האפליקציה או המודול:
Kotlin
Groovy
dependencies { def lifecycle_version = "2.11.0" def arch_version = "2.2.0" // ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version" // ViewModel utilities for Compose implementation "androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version" // LiveData implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version" // Lifecycles only (without ViewModel or LiveData) implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version" // Lifecycle utilities for Compose implementation "androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version" // Saved state module for ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version" // ViewModel integration with Navigation3 implementation "androidx.lifecycle:lifecycle-viewmodel-navigation3:2.11.0" // Annotation processor kapt "androidx.lifecycle:lifecycle-compiler:$lifecycle_version" // alternately - if using Java8, use the following instead of lifecycle-compiler implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version" // optional - helpers for implementing LifecycleOwner in a Service implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version" // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version" // optional - ReactiveStreams support for LiveData implementation "androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version" // optional - Test helpers for LiveData testImplementation "androidx.arch.core:core-testing:$arch_version" // optional - Test helpers for Lifecycle runtime testImplementation "androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version" }
Kotlin
dependencies { val lifecycle_version = "2.11.0" val arch_version = "2.2.0" // ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version") // ViewModel utilities for Compose implementation("androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version") // LiveData implementation("androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version") // Lifecycles only (without ViewModel or LiveData) implementation("androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version") // Lifecycle utilities for Compose implementation("androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version") // Saved state module for ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version") // ViewModel integration with Navigation3 implementation("androidx.lifecycle:lifecycle-viewmodel-navigation3:2.11.0") // Annotation processor kapt("androidx.lifecycle:lifecycle-compiler:$lifecycle_version") // alternately - if using Java8, use the following instead of lifecycle-compiler implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version") // optional - helpers for implementing LifecycleOwner in a Service implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version") // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version") // optional - ReactiveStreams support for LiveData implementation("androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version") // optional - Test helpers for LiveData testImplementation("androidx.arch.core:core-testing:$arch_version") // optional - Test helpers for Lifecycle runtime testImplementation ("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version") }
Java
Groovy
dependencies { def lifecycle_version = "2.11.0" def arch_version = "2.2.0" // ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version" // LiveData implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version" // Lifecycles only (without ViewModel or LiveData) implementation "androidx.lifecycle:lifecycle-runtime:$lifecycle_version" // Saved state module for ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version" // Annotation processor annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version" // alternately - if using Java8, use the following instead of lifecycle-compiler implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version" // optional - helpers for implementing LifecycleOwner in a Service implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version" // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version" // optional - ReactiveStreams support for LiveData implementation "androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version" // optional - Test helpers for LiveData testImplementation "androidx.arch.core:core-testing:$arch_version" // optional - Test helpers for Lifecycle runtime testImplementation "androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version" }
Kotlin
dependencies { val lifecycle_version = "2.11.0" val arch_version = "2.2.0" // ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version") // LiveData implementation("androidx.lifecycle:lifecycle-livedata:$lifecycle_version") // Lifecycles only (without ViewModel or LiveData) implementation("androidx.lifecycle:lifecycle-runtime:$lifecycle_version") // Saved state module for ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version") // Annotation processor annotationProcessor("androidx.lifecycle:lifecycle-compiler:$lifecycle_version") // alternately - if using Java8, use the following instead of lifecycle-compiler implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version") // optional - helpers for implementing LifecycleOwner in a Service implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version") // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version") // optional - ReactiveStreams support for LiveData implementation("androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version") // optional - Test helpers for LiveData testImplementation("androidx.arch.core:core-testing:$arch_version") // optional - Test helpers for Lifecycle runtime testImplementation("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version") }
מידע נוסף על יחסי תלות זמין במאמר הוספת יחסי תלות ב-build.
משוב
המשוב שלכם עוזר לנו לשפר את Jetpack. נשמח לדעת אם גיליתם בעיות חדשות או אם יש לכם רעיונות איך לשפר את הספרייה הזו. כדאי לעיין בבעיות הידועות בספרייה הזו לפני שמדווחים על בעיה. כדי להוסיף הצבעה בדיווח על בעיה קיימת, לוחצים על כפתור הכוכב.
מידע נוסף זמין במאמרי העזרה בנושא Issue Tracker.
גרסה 2.11
גרסה 2.11.0
17 ביוני 2026
androidx.lifecycle:lifecycle-*:2.11.0 מופץ. גרסה 2.11.0 מכילה את השמירות האלה.
שינויים חשובים מאז גרסה 2.10.0:
Scoped ViewModels ב-Compose – הוספנו את ViewModelStoreProvider, rememberViewModelStoreProvider ו-rememberViewModelStoreOwner כדי לקשר ViewModels להיקפים ספציפיים של ממשק המשתמש (כמו דפים של רכיב Pager). הם שורדים שינויים בהגדרות ומפונים אוטומטית כשהרכיב Composable מוסר מההיררכיה.
תמיכה ב-KMP – מעכשיו יש תמיכה בכל יעדי Kotlin Multiplatform ב-ViewModel-Compose וב-ViewModel-Navigation3.
שילוב של Navigation3 – עכשיו אפשר להשתמש ב-ViewModelStoreNavEntryDecorator כדי להעביר ViewModelStoreOwner ו-factories ל-ViewModels מקוננים.CreationExtras אפשר גם להשתמש בעומס יתר חדש של rememberViewModelStoreNavEntryDecorator כדי להציב ספקים במעלה ההיררכיה, וכך לתמוך בכמה מחסניות של פעולות שבוצעו לאחור. המאפיין removeViewModelStoreOnPop הוצא משימוש.
Lifecycle Utilities – נוספו תוסף ViewModelProvider.get<VM>(key) מוחשי, Lifecycle.addObserver מבוסס-lambda ותוספי ברירת מחדל של factory ל-ViewModelStoreOwner. הערה עם @EmptySuper נוספה עכשיו ל-ViewModel.onCleared.
שינויים אחרים – כדי להסיר את הגיבויים של ההשתקפות, צריך עכשיו להשתמש בממשק המשתמש של כתיבת ההודעות 1.7.0+ ב-LocalLifecycleOwner. כדי לעדכן את Compose compileSdk, צריך להשתמש בגרסה מינימלית של AGP 9.2.0.
גרסה 2.11.0-rc01
3 ביוני 2026
androidx.lifecycle:lifecycle-*:2.11.0-rc01 מופץ. גרסה 2.11.0-rc01 מכילה את השמירות האלה.
גרסה 2.11.0-beta02
19 במאי 2026
androidx.lifecycle:lifecycle-*:2.11.0-beta02 מופץ. גרסה 2.11.0-beta02 מכילה את השמירות האלה.
שינויים ב-API
- מוסיפים עומס יתר של
rememberViewModelStoreNavEntryDecoratorשמקבלViewModelStoreProvider. הפעולה הזו מאפשרת למפתחים להעלות את הפלאגין שמתממשק עם שירותים חיצוניים מעל היקף הקומפוזיציה של ה-decorator, וכך לתמוך בתרחישי שימוש כמו תמיכה בכמה מקבצי פעילויות קודמות (back stack) שבהן קיים אותו רשומה בשתיהן, אבל נדרש ערך דינמי נפרד. (Ibbbfe, b/503420425) - מניעת ניקוי מוקדם של
ViewModelsמשותף כשספק אח מוסר מההרכב. (Ib321a)
תיקוני באגים
- כדי להשתמש ב-
LocalLifecycleOwner, נדרשת גרסה 1.7.0 ואילך של Compose UI. הפעולה הזו מסירה חלופות פנימיות של השתקפות, משפרת את הביצועים אבל מחייבת לקוחות לשדרג את התלות שלהם. (I48e65) - כשמשדרגים ל-Compose Multiplatform 1.11.0, אפשר למנוע כפילות של סמלים באמצעות גרסאות ישנות יותר של JetBrains fork. (Iccd64)
- תוקנה בעיה שבה
ViewModelsנוקו בצורה שגויה במהלך רה-קומפוזיציה כשמשתמשים ב-rememberViewModelStoreProviderעם פרמטרים לא יציבים שמוגדרים כברירת מחדל. הספק יוצר מחדש רק כשהבעלים של ההורה או המפתח המפורש משתנים. (Ibe296, b/501792448)
גרסה 2.11.0-beta01
22 באפריל 2026
androidx.lifecycle:lifecycle-*:2.11.0-beta01 מופץ. גרסה 2.11.0-beta01 מכילה את השמירות האלה.
שינויים ב-API
- פיצול של
rememberViewModelStoreOwnerו-rememberViewModelStoreProviderלפונקציות נפרדות לתרחישי שימוש עם מקש ולתרחישי שימוש בלי מקש. (Ifd154, b/500802788)
תיקוני באגים
- עדכון של Compose
compileSdkל-API 37. כלומר, כשמשתמשים ב-Compose, נדרשת גרסת AGP מינימלית של 9.2.0. (Id45cd, b/413674743)
גרסה 2.11.0-alpha03
25 במרץ 2026
androidx.lifecycle:lifecycle-*:2.11.0-alpha03 מופץ. גרסה 2.11.0-alpha03 מכילה את השמירות האלה.
שינויים ב-API
- הופכים את
parentKeyלפרמטר אופציונלי בבוניViewModelStoreProvider, עם ערך ברירת מחדל שלnull, ומעבירים אותו אחריparentStoreאוparentOwner. הפעולה הזו מפשטת את יצירת המופע כשלא צריך מפתח משותף של היקף. (I66b67) ViewModelStoreNavEntryDecoratorמקבל עכשיוViewModelStoreOwnerבמקוםViewModelStore. כך Navigation3 יכול להעביר את ברירת המחדל שלCreationExtrasו-ViewModelProvider.Factoryשל הרכיב ההורה אל ViewModels מוטמעים, וכך לתמוך בתלות ברמת האפליקציה. (Ia6018, b/434651920)- בידוד המצב
ViewModelStoreProviderבאמצעות מפתח ייחודי. כך נמנע מצב שבו ספקי נתונים מאותו סוג מוחקים בטעות את ה-ViewModels של ספקי נתונים אחרים במהלך הסרתם. (I59c0b, b/434651920) - הוספת פונקציית תוסף
ViewModelProvider.get<VM>(key: String). כך המפתחים יכולים לאחזר ViewModels בצורה נקייה יותר באמצעותkeyמותאם אישית עם פרמטרים של סוג מאומת ב-Kotlin, בלי הצורך להעביר במפורש את סוג המחלקה. (Ic1f59) - מוסיפים
defaultArgsתמיכה ב-ViewModelStoreProviderכדי לאפשר הפעלה של ViewModels עם ערכיSavedStateברירת מחדל. (I1e933, b/434651920, b/165642391) - הוצאה משימוש של
removeViewModelStoreOnPopושלViewModelStoreNavEntryDecoratorDefaultsשמשויך אליו. ה-API הזה היה פתרון עקיף לשינויים בהגדרות, שמעכשיו מטופלים באופן פנימי. כל מצב המעצב, כולל ViewModels, חייב להימחק עכשיו בו-זמנית בהצגת חלון קופץ. כדי לשמור את ערך ה-decorator מחוץ למצב שבו מקבץ הפעילויות הקודמות מועבר ל-NavDisplay, צריך להשתמש ב-APIrememberDecoratedNavEntries. (I852d9)
תיקוני באגים
- מוסיפים
toString()ל-CreationExtras.Keyכדי להציג את שם הכיתה. (I5de52)
גרסה 2.11.0-alpha02
11 במרץ 2026
androidx.lifecycle:lifecycle-*:2.11.0-alpha02 מופץ. גרסה 2.11.0-alpha02 מכילה את השמירות האלה.
Scoped ViewModels
בגרסה הזו מוצגים ממשקי API ליצירת מופעים של
ViewModelStoreב-Compose עם היקף מוגדר. כך אפשר לקשר אתViewModelsלהיקפים ספציפיים של ממשק המשתמש (כמו דפים ספציפיים שלPagerאו פריטים שלLazyList). ה-ViewModelsהאלה שורדים שינויים בהגדרות, והם מתנקים אוטומטית כשמסירים לצמיתות את הרכיב הקומפוזבילי המתאים שלהם מההיררכיה.// Hoist the parent provider outside the Pager. val provider = rememberViewModelStoreProvider() val pagerState = rememberPagerState(pageCount = { 5 }) HorizontalPager(state = pagerState) { page -> // Create an owner scoped to the current page. val storeOwner = rememberViewModelStoreOwner(provider, key = page) // Provide the scoped owner to this composition. CompositionLocalProvider(LocalViewModelStoreOwner provides storeOwner) { // ViewModel is now scoped specifically to this page. val viewModel: PageViewModel = viewModel() } }
שימו לב שהפונקציה ViewModelStoreProvider זמינה מחוץ ל-Compose ואפשר להשתמש בה עם Activities, Fragments ו/או Views.
תכונות חדשות
- הוספת תמיכה בכל יעדי KMP ל-ViewModel Navigation3. (I60fa5)
- הוספת פונקציות factory ל-
LifecycleOwner, ל-ViewModelStoreOwnerול-SavedStateRegistryOwnerכדי לצמצם את קוד ה-boilerplate כשמרכיבים רכיבי בעלים בהתאמה אישית. (I9682c) - מוסיפים פונקציית הרחבה מבוססת-lambda
Lifecycle.addObserverכדי לאפשר צפייה באירועים של מחזור החיים בלי ליצור מופע של אובייקט אנונימי. (I94f38) - הוספת התוספים
defaultViewModelProviderFactoryו-defaultViewModelCreationExtrasאלViewModelStoreOwner. הם מספקים גישה בטוחה לברירות מחדל בלי לדרוש בדיקות ידניות של סוגים מולHasDefaultViewModelProviderFactory. (Ifa83d)
שינויים ב-API
- אפשר להוסיף
rememberViewModelStoreOwnerכדי ליצור בקלותViewModelStoreOwnerים עם היקף מוגדר בכלי הכתיבה. הפונקציה הזו מחזירה בעלים שקשור למחזור החיים של רכיב ה-Composable, ומנקה אוטומטית את ה-ViewModels שלו כשהרכיב מוסר מממשק המשתמש. (I2a15b, b/165642391) - מוסיפים את
rememberViewModelStoreProviderכדי לאפשר יצירת מופעים שלViewModelStoreבהיקף מוגבל ב-Compose. הפונקציה הזו מקשרת חנות צאצא לבעלים של חנות אב, וכך מוודאת ש-ViewModels שורדים שינויים בהגדרות, תוך ניקוי אוטומטי שלהם כשמסירים את ה-Composable מההיררכיה. (I0f57a, b/165642391) - מוסיפים
ViewModelStoreProviderכדי לנהל מופעיםViewModelStoreבהיקף מוגבל. המחלקות האלה מאפשרות ליצור היקפים משניים ששורדים שינויים בהגדרות, אבל אפשר לנקות אותם בנפרד. הוא מספק גםViewModelStoreOwnerwrappers שמקבלים בירושה את הגדרות ברירת המחדל של factories ואת תוספות היצירה מההורה. (I87f4f, b/434651920)
גרסה 2.11.0-alpha01
25 בפברואר 2026
androidx.lifecycle:lifecycle-*:2.11.0-alpha01 מופץ. גרסה 2.11.0-alpha01 מכילה את השמירות האלה.
תכונות חדשות
- תמיכה בכל יעדי Kotlin Multiplatform (KMP) ב-ViewModel-Compose. הפרדת פתרון הבעלים מ-
LocalViewכדי לאפשר למארחי פלטפורמות לספקViewModelStoreOwnerכברירת מחדל, תוך שמירה עלLocalViewכגיבוי בטוח ב-Android. (I09fab, b/434940570, Ic8526, b/478146897)
שינויים ב-API
- כדי לפשט את תהליך הניפוי באגים, מוסיפים הטמעה של
toStringל-ViewModelStoreשמציגה את כל המפתחות המאוחסנים. (I0a6f4) - הוספת הטמעה שמוגדרת כברירת מחדל ל-
HasDefaultViewModelProviderFactory.defaultViewModelProviderFactory, כלומר לא צריך יותר לבטל את ברירת המחדל של המאפיין הזה באופן מפורש כשמטמיעים את הממשק. (Ia7095) - מוסיפים את ההערה
@EmptySuperל-ViewModel.onClearedכדי לציין במפורש שאין צורך להפעיל אתsuper.onCleared()בשיטות שמוגדרות כ-override. (I8c226)
גרסה 2.10
גרסה 2.10.0
19 בנובמבר 2025
androidx.lifecycle:lifecycle-*:2.10.0 מופץ. גרסה 2.10.0 מכילה את השמירות האלה.
שינויים חשובים מאז גרסה 2.9.0:
מוסיפים
rememberLifecycleOwnerרכיב קומפוזבילי כדי לאפשר יצירת מחזורי חיים בהיקף מוגבל ישירות בממשק המשתמש. השימוש הזה שימושי לרכיבים שצריכים לנהל את מחזורי החיים שלהם באופן עצמאי, כמוHorizontalPagerשרוצה להפוך רק את הדף הנוכחי ל-RESUMEDאו ספריות כמו Navigation3:@Composable fun MyComposable() { // This LifecycleOwner is automatically moved to DESTROYED when // it leaves composition and its maxLifecycle is the maximum of either // the maxLifecycle you set or the Lifecycle.State of the parentLifecycleOwner val lifecycleOwner = rememberLifecycleOwner( maxLifecycle = RESUMED, parentLifecycleOwner = LocalLifecycleOwner.current, ) CompositionLocalProvider(LocalLifecycleOwner provides lifecycleOwner) { val childLifecycleOwner = LocalLifecycleOwner.current } }ארטיפקט
lifecycle-viewmodel-navigation3מספק שילוב מוכן מראש ל-Navigation3, ומאפשר להפעיל היקף של מופעיViewModelלמסכים בודדים ('רשומות') באמצעותrememberViewModelStoreNavEntryDecorator()API:@Composable fun MyComposable() { NavDisplay( backStack = backStack, entryDecorators = listOf( rememberSaveableStateHolderNavEntryDecorator(), // Add this line to automatically scope ViewModels to each entry rememberViewModelStoreNavEntryDecorator(), ), entryProvider = entryProvider { // Add your entries here } } }הוספנו פונקציית יצירת אובייקט (builder) בשביל
CreationExtras, כדי לספק API נוח יותר ואידיומטי יותר של Kotlin.override val defaultViewModelCreationExtras: CreationExtras // Use the CreationExtras builder to add in a custom value to the default // CreationExtras in your Activity or Fragment get() = super.defaultViewModelCreationExtras + CreationExtras { this[CustomKey] = "customValue" }הוספנו תמיכה מקורית בסוגים שניתן להגדיר כ-nullable ב-
SavedStateHandle.saved, כדי לפשט את השמירה והשחזור של מאפיינים שניתן להגדיר כ-nullable.סימון של יצרני
SavedStateHandleכ-@VisibleForTesting.הערך של minSdk השתנה מ-API 21 ל-API 23.
גרסה 2.10.0-rc01
5 בנובמבר 2025
androidx.lifecycle:lifecycle-*:2.10.0-rc01 מופץ. גרסה 2.10.0-rc01 מכילה את השמירות האלה.
גרסה 2.10.0-beta01
22 באוקטובר 2025
androidx.lifecycle:lifecycle-*:2.10.0-beta01 מופץ. גרסה 2.10.0-beta01 מכילה את השמירות האלה.
שינויים ב-API
- השם
ViewModelStoreNavEntryDecoratorDefaultשונה ל-ViewModelStoreNavEntryDecoratorDefaults, עם האות s. (I6d27b, b/444447434)
תיקוני באגים
rememberLifecycleOwnerלא קורס יותר אם הבעלים מקבל אירועLifecycle.Event.ON_DESTROYלפני המעבר אלLifeycle.State.CREATED. (I6f98e, b/444594991)
גרסה 2.10.0-alpha05
8 באוקטובר 2025
androidx.lifecycle:lifecycle-*:2.10.0-alpha05 מופץ. גרסה 2.10.0-alpha05 מכילה את השמירות האלה.
שינויים ב-API
- ה-
removeViewModelStoreOnPopCallback()הוא עכשיו חלק מאובייקטViewModelStoreNavEntryDecoratorDefault, שבו פלטפורמות והטמעות אחרות יכולות לקרוא לברירת המחדל. (Ia1f23, b/444447434) - הפונקציה
ViewModelStoreNavEntryDecoratorעברה רפקטורינג והפכה לפונקציה מסוג class, כדי לשקף טוב יותר את הפונקציונליות שלה כפונקציית factory עבורNavEntryDecorator. בנוסף, הפרמטרshouldRemoveViewModelStoreשל הדקורטור קיבל את השםremoveViewModelStoreOnPopכדי להבהיר שהקריאה החוזרת הזו מופעלת רק כשפריט מוצא מה-backStack. (Iefdc5, b/444447434)
גרסה 2.10.0-alpha04
24 בספטמבר 2025
androidx.lifecycle:lifecycle-*:2.10.0-alpha04 מופץ. גרסה 2.10.0-alpha04 מכילה את השמירות האלה.
שינויים ב-API
- משנים את השם של הרכיב הקומפוזבילי
LifecycleOwnerל-rememberLifecycleOwner. הפונקציה מחזירה עכשיו אתLifecycleOwnerישירות. כדי לספק את הבעלים הזה לקומפוזיציה משנית, משתמשים ב-CompositionLocalProvider. (Ic57f0, b/444446629) - הוספת stubs של KMP ל-lifecycle-viewmodel-navigation3 כדי לאפשר ל-JetBrains לספק forks שממלאים את היעדים האלה וכך לתמוך ב-CMP. (I44a4c)
גרסה 2.10.0-alpha03
27 באוגוסט 2025
androidx.lifecycle:lifecycle-*:2.10.0-alpha03 מופץ. גרסה 2.10.0-alpha03 מכילה את השמירות האלה.
שינויים ב-API
- מעדכנים את Compose לגרסה 1.9.0. (I2b9de)
גרסה 2.10.0-alpha02
13 באוגוסט 2025
androidx.lifecycle:lifecycle-*:2.10.0-alpha02 מופץ. גרסה 2.10.0-alpha02 מכילה את השמירות האלה.
תכונות חדשות
רכיב ה-Composable
LifecycleOwnerיכול עכשיו ליצור מחזור חיים עצמאי של רכיב הבסיס. אם מגדירים אתparent = nullבאופן מפורש, מחזור החיים החדש פועל באופן עצמאי ללא תלות במארח (כמוActivity, FragmentאוNavBackStackEntry). הוא מתחיל ברגע שהרכיב הניתן להרכבה נכנס להרכבה ונהרס אוטומטית כשהוא יוצא ממנה. (I8dfbe, b/433659048)@Composable fun IndependentComponent() { // Create a standalone lifecycle, not tied to the parent Activity/Fragment. LifecycleOwner(parent = null) { val rootLifecycle = LocalLifecycleOwner.current.lifecycle } }
שינויים ב-API
- ב-composable
LifecycleOwner, הפרמטרparentLifecycleOwnerנקרא עכשיוparent. (I080bc)
תיקוני באגים
-
LifecycleOwnercomposable מעביר עכשיו את מחזור החיים שלו ל-DESTROYEDבצורה נכונה אחרי הסרת הרכיב. כך נמנעות דליפות פוטנציאליות בקוד חיצוני שמכיל הפניה למחזור החיים. (I9e5b7, b/433659048) - העברת ברירת המחדל של minSdk מ-API 21 ל-API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
External Contribution
- הסרת שדות גיבוי פנימיים מיותרים מ-
LifecycleOwner. תודה ל-Jake Wharton על התרומה. (Ideddb)
גרסה 2.10.0-alpha01
30 ביולי 2025
androidx.lifecycle:lifecycle-*:2.10.0-alpha01 מופץ. גרסה 2.10.0-alpha01 מכילה את השמירות האלה.
תכונות חדשות
מוסיפים
LifecycleOwnerרכיב קומפוזבילי כדי לאפשר יצירת מחזורי חיים בהיקף מוגבל ישירות בממשק המשתמש. האפשרות הזו שימושית לרכיבים שצריכים לנהל את מחזורי החיים שלהם באופן עצמאי. דוגמה לאופן שבו Navigation3 משלב את הרכיב החדש הזה זמינה בכתובת aosp/3708610. (76cbf7)@Composable fun MyComposable() { LifecycleOwner( maxLifecycle = RESUMED, parentLifecycleOwner = LocalLifecycleOwner.current, ) { val childLifecycleOwner = LocalLifecycleOwner.current } }
שינויים ב-API
- הוספנו פונקציית יצירת אובייקט (builder) בשביל
CreationExtras, כדי לספק API נוח יותר ואידיומטי יותר של Kotlin. (Iab2bd) - הוספנו תמיכה מקורית בסוגים שניתן להגדיר כ-nullable ב-
SavedStateHandle.saved, כדי לפשט את השמירה והשחזור של מאפיינים שניתן להגדיר כ-nullable. (I54d69, b/421325690) - סימון של יצרני
SavedStateHandleכ-@VisibleForTesting. (Iff0e0, b/408002794)
גרסה 2.9
גרסה 2.9.4
17 בספטמבר 2025
androidx.lifecycle:lifecycle-*:2.9.4 מופץ. גרסה 2.9.4 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה שגיאה שגרמה לכך שהתוסף Compose Compiler לא הוחל, ולכן ארטיפקטים של Lifecycle KMP היו פגומים. (Ie95bc, b/443096483, b/443965665)
גרסה 2.9.3
27 באוגוסט 2025
androidx.lifecycle:lifecycle-*:2.9.3 מופץ. גרסה 2.9.3 מכילה את השמירות האלה.
תכונות חדשות
- הוספת יעדים חדשים של Kotlin Multiplatform (KMP) לארטיפקטים של Lifecycle
*-compose. התכונה 'מחזור חיים' תומכת עכשיו בפלטפורמות הבאות: JVM (Android ומחשבים), Native (Linux, iOS, watchOS, macOS, MinGW) ו-Web (JavaScript, WasmJS). (I0a0e4)
תיקוני באגים
- עדכון
androidx.annotationלגרסה 1.9.1 (Ic9e4f, b/397701294)
גרסה 2.9.2
16 ביולי 2025
androidx.lifecycle:lifecycle-*:2.9.2 מופץ. גרסה 2.9.2 מכילה את השמירות האלה.
תיקוני באגים
- נוספו יעדים חדשים של Kotlin Multiplatform (KMP) לארטיפקטים של מחזור החיים. התכונה 'מחזור חיים' תומכת עכשיו בפלטפורמות הבאות: JVM (Android ומחשבים), Native (Linux, iOS, watchOS, macOS, MinGW) ו-Web (JavaScript, WasmJS). שימו לב שלא נוספו יעדי KMP חדשים לארטיפקטים של
*-compose, כי זה תלוי בגרסה היציבה של Compose 1.9. (I01cb8).
עדכונים של תלות
- הספרייה Lifecycle תלויה עכשיו ב-Annotation
1.9.1כדי לאפשר תמיכה ביעדי KMP חדשים (Ic9e4f, b/397701294).
גרסה 2.9.1
4 ביוני 2025
androidx.lifecycle:lifecycle-*:2.9.1 מופץ. גרסה 2.9.1 מכילה את השמירות האלה.
תיקוני באגים
- תיקון הבעיה
SavedStateHandle.remove(key)לא מנקה את המצביםSavedStateHandle.getMutableStateFlow(key). (d5f939, b/418746333)
גרסה 2.9.0
7 במאי 2025
androidx.lifecycle:lifecycle-*:2.9.0 מופץ. גרסה 2.9.0 מכילה את השמירות האלה.
שינויים חשובים מאז גרסה 2.8.0
- יש ארטיפקט חדש של
androidx.lifecycle:lifecycle-viewmodel-testingKMP שמספק מחלקה שלViewModelScenarioלבדיקה שלViewModelsבבידוד, עם תמיכה ב-onClearedוב-SavedStateHandle, וגם תמיכה בבדיקת השבתת תהליך ויצירה מחדש באמצעותrecreate(). - מוסיפים
getMutableStateFlowל-SavedStateHandleכדי להחזירMutableStateFlow. הפונקציה החדשה הזו בלעדית למקלדת, ואי אפשר להשתמש בה עםgetLiveData. אם תנסו להשתמש בשניהם כדי לגשת לאותו מצב, תופעל חריגה. -
CreationExtrasכולל עכשיו עומסי אופרטורים דמויי מפה כדי לאפשר מניפולציה אידיומטית של תוכן ב-Kotlin. היא מאפשרת שימוש ב-in, ב-+=וב-+עםCreationExtras.
תמיכה ב-KotlinX Serialization
בעזרת התמיכה ב-KotlinX Serialization שנוספה ב-SavedState
1.3.0, השקנו אתsaved, נציג מאפיינים עצלן, כדי לאפשר לכם לאחסן בקלות מחלקות@Serializableב-SavedStateHandleולשחזר את המחלקות האלה באופן אוטומטי אחרי שהתהליך נכשל ונוצר מחדש. חשוב לזכור שהנציגsavedהוא עצלן ולא יפעיל את פונקציית ה-lambdainitאו ישמור משהו ב-SavedStateHandleעד שניגשים אליו.@Serializable data class Person(val firstName: String, val lastName: String) class MyViewModel(handle: SavedStateHandle) : ViewModel() { var person by handle.saved { Person("John", "Doe") } fun onPersonChanged(person: Person) { this.person = person } }
Kotlin Multiplatform
- מודול
lifecycle-testingתואם עכשיו ל-KMP, כולל ממשקי API כמוTestLifecycleOwner. - מודול
lifecycle-viewmodel-savedstateתואם עכשיו ל-KMP, כולל ממשקי API כמוSavedStateHandle. - הגופן
androidx.compose.ui.platform.LocalLifecycleOwnerזמין עכשיו בקבוצת המקורות המשותפת. -
NewInstanceFactoryזמין עכשיו ביעדי JVM Desktop ו-Android.
שינויים בהתנהגות
- המצב
Lifecycle.DESTROYEDהוא סופי, וכל ניסיון להעבירLifecycleממצב זה למצב אחר יגרום עכשיו ל-IllegalStateException. - הפונקציה
SavedStateHandleכבר לא כוללתSavedStateProvider.saveState()אם הערך המוחזר שלBundleריק.
גרסה 2.9.0-rc01
23 באפריל 2025
androidx.lifecycle:lifecycle-*:2.9.0-rc01 מופץ. גרסה 2.9.0-rc01 מכילה את השמירות האלה.
אזהרת תאימות של Lint API
- חברת JetBrains שינתה את
KaCallableMemberCallממחלקה לממשק, מה שגורם לבעיות בתאימות הבינארית. אם גרסת ה-AGP של הפרויקט שונה מהגרסה שמשמשת להידור של בדיקות lint, עלולות להתרחש קריסות. העדכון הזה בוצע ב-aosp/3577172 אבל הוא לא נכלל בהערות לגרסה – אנחנו מבהירים אותו כאן. התיקון המומלץ: עדכון לגרסה היציבה האחרונה של AGP. אם אין לכם אפשרות לעדכן באופן מלא, אתם יכולים להשתמש ב-android.experimental.lint.versionכדי להתאים את בדיקות ה-lint לגרסת AGP שלכם. פרטים נוספים זמינים במאמר שינויים בהתנהגות של Compose Runtime.
גרסה 2.9.0-beta01
9 באפריל 2025
androidx.lifecycle:lifecycle-*:2.9.0-beta01 מופץ. גרסה 2.9.0-beta01 מכילה את השמירות האלה.
שינויים ב-API
-
Lifecycle ViewModel Composeמשתמשת עכשיו באותה הגדרה של Kotlin Multiplatform כמו Compose Runtime 1.7.1 ומעלה – הארטיפקטים של-desktopהוסרו ועכשיו יש ארטיפקטים של-jvmStubsו--linuxx64Stubs. אף אחד מהיעדים האלה לא מיועד לשימוש, הם משמשים כ-placeholder כדי לעזור למאמצי Jetbrains Compose. (I5cb14, b/406592090)
עדכונים של תלות
- הספרייה הזו מטרגטת עכשיו את רמת השפה Kotlin 2.0 ונדרשת KGP 2.0.0 או גרסה חדשה יותר. (Idb6b5)
-
Lifecycle ViewModel Composeתלוי עכשיו ב-Compose 1.7.8. (I5cb14, b/406592090)
גרסה 2.9.0-alpha13
26 במרץ 2025
הגרסה androidx.lifecycle:lifecycle-*:2.9.0-alpha13 יוצאת ללא שינויים משמעותיים שגלויים לציבור. גרסה 2.9.0-alpha13 מכילה את השמירות האלה.
גרסה 2.9.0-alpha12
12 במרץ 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha12 מופץ. גרסה 2.9.0-alpha12 מכילה את השמירות האלה.
שינויים ב-API
- הוספת הערה
@MainThreadל-ViewModelProvider.getבכל פלטפורמות KMP הנתמכות. (I7e8dd, b/397736115) - שינוי השם של
SavedState*DelegatesלSavedState*Delegate. (I8589b, b/399629301)
גרסה 2.9.0-alpha11
26 בפברואר 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha11 מופץ. גרסה 2.9.0-alpha11 מכילה את השמירות האלה.
שינויים ב-API
- הוספת הפרמטר
SavedStateConfigלנציגיsaved()(I39b3a)
גרסה 2.9.0-alpha10
12 בפברואר 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha10 מופץ. גרסה 2.9.0-alpha10 מכילה את השמירות האלה.
שינויים ב-API
- העברה של
MutableStateSerializerאלsavedstate-composeמ-lifecycle-viewmodel-compose. (I4f690, b/378895074)
External Contribution
- נוספה בעיה חדשה ב-Lint שמתריעה על קריאה ל-
Lifecycle::currentStateבקומפוזיציה, ומציעה במקום זאת להשתמש ב-currentStateAsalue().valueכדי לוודא ששינויים במצב Lifecycle גורמים לרה-קומפוזיציה בצורה נכונה. תודה, Steven Schoen! (Iad484)
גרסה 2.9.0-alpha09
29 בינואר 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha09 מופץ. גרסה 2.9.0-alpha09 מכילה את השמירות האלה.
תכונות חדשות
- הוספת
MutableStateSerializerלסדרתandroidx.compose.runtime.MutableState. (Idfc48, b/378895074)
שינויים ב-API
- החלפת פונקציות מואצלות בעלות עומס יתר
SavedStateHandle.saved()בפרמטרים שמוגדרים כברירת מחדל (Icd1c1) - המאפיין
AbstractSavedStateViewModelFactoryהוצא משימוש כי הוא יוצרSavedStateHandleלכלViewModel, וגורם לתקורה מיותרת. כדי ליצורViewModelבצורה יעילה יותר, כדאי להשתמש ב-ViewModelProvider.FactoryעםCreationExtras.createSavedStateHandle. (Ia920b, b/388590327)
גרסה 2.9.0-alpha08
11 בדצמבר 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha08 מופץ. גרסה 2.9.0-alpha08 מכילה את השמירות האלה.
תכונות חדשות
- מוסיפים את
ViewModelScenario.recreateכדי לדמות את התהליך System Process Death שיוצר מחדש אתViewModelשנבדק ואת כל הרכיבים המשויכים. (Id6a69, b/381063087) - עכשיו אפשר לפתור מקרים של
LifecycleOwnerו-ViewModelStoreOwnerשאוחזרו באמצעות ממשקי ה-API המתאימים שלfindViewTreeדרך הורים לא רציפים של תצוגה, כמוViewOverlay. מידע נוסף על הורים של תצוגות מפוצלות זמין בהערות הגרסה של ליבת או במאמרי העזרה בכתובתViewTree.setViewTreeDisjointParent. (I800f4)
שינויים ב-API
- התאמת השמות והארגון של החבילות ל-
SavedStateRegistryOwnerDelegate(I8c135, b/376026744)
תיקוני באגים
- הספרייה הזו משתמשת עכשיו באנוטציות של JSpecify nullness, שהן מסוג type-use. מפתחי Kotlin צריכים להשתמש בארגומנט המהדר הבא כדי לאכוף שימוש נכון:
-Xjspecify-annotations=strict(זו ברירת המחדל החל מגרסה 2.1.0 של מהדר Kotlin). (Ie4340, b/326456246) - רצף ניקוי המסמך
ViewModel.onCleared. (I586c7, b/363984116)
גרסה 2.9.0-alpha07
13 בנובמבר 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha07 מופץ. גרסה 2.9.0-alpha07 מכילה את השמירות האלה.
תאימות ל-Kotlin Multiplatform
- Lifecycle
ViewModel SavedStateתואם עכשיו ל-KMP. כך תוכלו להשתמש ב-SavedStateHandleבקוד משותף. (Ib6394, b/334076622)
תמיכה ב-KotlinX Serialization
בעזרת התמיכה ב-KotlinX Serialization שנוספה ב-SavedState
1.3.0-alpha05, השקנו אתsaved, נציג מאפיינים עצלן, כדי לאפשר לכם לאחסן בקלות מחלקות@Serializableב-SavedStateHandleולשחזר את המחלקות האלה באופן אוטומטי אחרי שהתהליך נכשל ונוצר מחדש. חשוב לזכור שהנציגsavedהוא עצלן ולא יפעיל את פונקציית ה-lambdainitאו ישמור משהו ב-SavedStateHandleעד שניגשים אליו. (I47a88, b/376026744)@Serializable data class Person(val firstName: String, val lastName: String) class MyViewModel(handle: SavedStateHandle) : ViewModel() { var person by handle.saved { Person("John", "Doe") } fun onPersonChanged(person: Person) { this.person = person } }
שינויים ב-API
- מוסיפים
getMutableStateFlowל-SavedStateHandleכדי להחזירMutableStateFlow. הפונקציה החדשה הזו בלעדית למקלדת, ואי אפשר להשתמש בה עםgetLiveData. אם תנסו להשתמש בשניהם כדי לגשת לאותו מצב, תופעל חריגה. (I04a4f, b/375408415)
גרסה 2.9.0-alpha06
30 באוקטובר 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha06 מופץ. גרסה 2.9.0-alpha06 מכילה את השמירות האלה.
שינויים בהתנהגות
- המצב
Lifecycle.DESTROYEDהוא סופי, וכל ניסיון להעבירLifecycleממצב זה למצב אחר יגרום עכשיו ל-IllegalStateException. (I116c4, b/370577987) - הפונקציה
SavedStateHandleכבר לא כוללתSavedStateProvider.saveState()אם הערך המוחזר שלBundleריק. (I910b5, b/370577987)
תיקוני באגים
- הפונקציה
Lifecycle.eventFlowמושלמת עכשיו בצורה נכונה כש-LifecycleהואDESTROYED(I293b2, b/374043130)
גרסה 2.9.0-alpha05
16 באוקטובר 2024
הגרסה androidx.lifecycle:lifecycle-*:2.9.0-alpha05 הושקה ללא שינויים משמעותיים. גרסה 2.9.0-alpha05 מכילה את השמירות האלה.
גרסה 2.9.0-alpha04
2 באוקטובר 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha04 מופץ. גרסה 2.9.0-alpha04 מכילה את השמירות האלה.
Kotlin Multiplatform
- מודול
lifecycle-viewmodel-savedstateמוגדר עכשיו כך שיהיה תואם ל-KMP, כהכנה לכך שממשקי API כמוSavedStateHandleיהיו זמינים בערכת מקורות משותפת בגרסה עתידית. (I503ed, I48764, b/334076622)
גרסה 2.9.0-alpha03
18 בספטמבר 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha03 מופץ. גרסה 2.9.0-alpha03 מכילה את השמירות האלה.
תיקוני באגים
- מתוך מחזור החיים
2.8.6: השגיאהNullSafeMutableLiveDataLint כוללת תמיכה משופרת בהמרות חכמות, כדי למנוע תוצאות חיוביות מוטעות. (85fed6, b/181042665)
עדכונים של תלות
- Lifecycle
2.8.6: Lifecycle Runtime Compose תלוי עכשיו ב-Compose Runtime1.7.1 - זמן הריצה של מחזור החיים תלוי עכשיו ב-ProfileInstaller
1.4.0
גרסה 2.9.0-alpha02
4 בספטמבר 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha02 מופץ. גרסה 2.9.0-alpha02 מכילה את השמירות האלה.
תיקוני באגים
- בקטע Lifecycle
2.8.5(מחזור חיים): מעדכנים את כללי ProGuard androidx.lifecycle.ReportFragmentכדי לאפשר טשטוש . (ff898e1)
External Contribution
- מעבירים את
androidx.compose.ui.platform.LocalLifecycleOwnerלערכת מקור משותפת (KMP). תודה לאיוון מטקוב מ-JetBrains על התרומה. (8cd5d03) - מתוך Lifecycle
2.8.5: נציג ההרחבה SavedStateHandle.saveable` תומך עכשיו בערכים שניתן להגדיר כ-nullable. תודה ל-Roman Kalukiewicz על התרומה. (0d78ea6)
גרסה 2.9.0-alpha01
7 באוגוסט 2024
androidx.lifecycle:lifecycle-*:2.9.0-alpha01 מופץ. גרסה 2.9.0-alpha01 מכילה את השמירות האלה.
Kotlin Multiplatform
-
lifecycle-testingתואם עכשיו ל-KMP. (Iea41e) - הוספת תמיכה ב-
linuxArm64kotlin multiplatform target (I139d3, b/338268719)
תכונות חדשות
- יש ארטיפקט KMP חדש,
androidx.lifecycle:lifecycle-viewmodel-testing, שמספק מחלקה שלViewModelScenarioלבדיקת ViewModels בבידוד, עם תמיכה ב-onCleared(כל הפלטפורמות) וב-SavedStateHandle(Android בלבד). (337f68d, c9b3409, 9799a95c, b/264602919) - יצירת
ViewModelבאמצעותViewModelProviderבטוחה עכשיו לשימוש עם שרשורים. הערות@MainThreadהוסרו. (Ifd978, b/237006831)
שינויים ב-API
- מוסיפים את פונקציית היצירה
CreationExtras.Key()כדי לפשט את היצירה של אובייקטים אנונימייםCreationExtras.Key. (I970ee) -
CreationExtrasכולל עכשיו עומסי אופרטורים דמויי מפה כדי לאפשר מניפולציה אידיומטית של תוכן ב-Kotlin. היא מאפשרת שימוש ב-in, ב-+=וב-+עםCreationExtras. (Ib4353) -
CreationExtrasמטמיע עכשיו את ה-methodsequals,hashCodeו-toString. (Ib4353) -
NewInstanceFactoryזמין עכשיו ביעדי JVM Desktop ו-Android. (d3d0892) - מאפיין הרחבה מוטבע לחשיפת האפליקציה הבסיסית בצורה בטוחה בגרסה 2.0 של שפת Kotlin (I39df2)
תיקוני באגים
- הסרנו את האפשרות ליצור באופן ידני תרשים של הגישה לממשקי API חדשים של הפלטפורמה, כי זה קורה אוטומטית באמצעות מידול API כשמשתמשים ב-R8 עם AGP 7.3 ואילך (למשל R8 גרסה 3.3) ובכל הבנייה כשמשתמשים ב-AGP 8.1 ואילך (למשל D8 גרסה 8.1). לקוחות שלא משתמשים ב-AGP מומלץ לעדכן לגרסה 8.1 ואילך של D8. למידע נוסף, מומלץ לעיין במאמר הזה. (If6b4c, b/345472586)
גרסה 2.8
גרסה 2.8.7
30 באוקטובר 2024
androidx.lifecycle:lifecycle-*:2.8.7 מופץ. גרסה 2.8.7 מכילה את השמירות האלה.
שינויים ב-API
-
androidx.compose.ui.platform.LocalLifecycleOwnerזמין עכשיו בערכת המקורות המשותפת (KMP). (6a3f5b3) -
lifecycle-runtime-compose: הוסרוdesktopפריטי מידע שנוצרו בתהליך פיתוח (Artifact) והוספו-jvmStubsו--linuxx64Stubsפריטי מידע שנוצרו בתהליך פיתוח (Artifact). אף אחד מהיעדים האלה לא מיועד לשימוש, הם משמשים כ-placeholder כדי לעזור למאמצי Jetbrains Compose. (6a3f5b3)
גרסה 2.8.6
18 בספטמבר 2024
androidx.lifecycle:lifecycle-*:2.8.6 מופץ. גרסה 2.8.6 מכילה את השמירות האלה.
תיקוני באגים
- השגיאה
NullSafeMutableLiveDataLint כוללת תמיכה משופרת בהמרות חכמות, כדי למנוע תוצאות חיוביות שגויות. (85fed6, b/181042665)
עדכונים של תלות
- Lifecycle Runtime Compose תלוי עכשיו ב-Compose Runtime
1.7.1
גרסה 2.8.5
4 בספטמבר 2024
androidx.lifecycle:lifecycle-*:2.8.5 מופץ. גרסה 2.8.5 מכילה את השמירות האלה.
תיקוני באגים
- מעדכנים את כללי
androidx.lifecycle.ReportFragmentProGuard כדי לאפשר טשטוש . (ff898e1)
External Contribution
- התוסף
SavedStateHandle.saveableתומך עכשיו בערכים שניתן להגדיר כ-null. תודה ל-Roman Kalukiewicz על התרומה. (0d78ea6)
גרסה 2.8.4
24 ביולי 2024
androidx.lifecycle:lifecycle-*:2.8.4 מופץ. גרסה 2.8.4 מכילה את השמירות האלה.
תיקוני באגים
LiveData.asFlow()עכשיו המערכת מטפלת בצורה נכונה במקרים שבהם התהליך המוחזר מסתיים מיד אחרי קבלת ערך שכבר הוגדר ב-LiveData(לדוגמה, כשמשתמשים ב-take(1)). (I9c566)- השלמת
Lifecycle*Effectהיא עכשיו אידמפוטנטית (כלומר, אם בוצעה קריאה ל-onStopOrDisposeבגלל עצירה של מחזור החיים, לא תתבצע קריאה נוספת לאחר הסילוק, אלא אם מחזור החיים יחזור למצבSTARTED). (I5f607, b/352364595)
גרסה 2.8.3
1 ביולי 2024
androidx.lifecycle:lifecycle-*:2.8.3 מופץ. גרסה 2.8.3 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה בתאימות לאחור של Lifecycle 2.8 עם Compose 1.6.0 ומטה כשמשתמשים בכיווץ קוד. (aosp/3133056, b/346808608)
גרסה 2.8.2
12 ביוני 2024
androidx.lifecycle:lifecycle-*:2.8.2 מופץ. גרסה 2.8.2 מכילה את השמירות האלה.
תיקוני באגים
- תוקנו שגיאות
CompositionLocal LocalLifecycleOwner not presentשהתרחשו כשנעשה שימוש ב-Lifecycle 2.8.X עם Compose 1.6.X או גרסה מוקדמת יותר. עכשיו אפשר להשתמש ב-Lifecycle 2.8.2 עם כל גרסה של Compose בלי צורך בפתרונות עקיפים. (aosp/3105647, b/336842920) -
ViewModelProviderלא יקרוס יותר כשמשלבים גרסאות קודמות שלcompileOnlyLifecycle עם גרסאות 2.8 ומעלה, וכך נפתרות בעיות בספריות כמו LeakCanary. (I80383, b/341792251)
גרסה 2.8.1
29 במאי 2024
androidx.lifecycle:lifecycle-*:2.8.1 מופץ. גרסה 2.8.1 מכילה את השמירות האלה.
תיקוני באגים
- למדד
lifecycle-viewmodel-composeיש עכשיו רק תלות משותפת במדדcompose-runtime, והתלות המשותפת שלו במדדcompose-uiהוסרה. הארטיפקט של Android שומר עלcompose-uiלצורך תאימות. (aosp/3079334, b/339562627) - השילוב של
ViewModelעםsaveableבאמצעות נציגי מאפיינים משתמש עכשיו בשם המחלקה כחלק מהמפתח שנוצר באופן אוטומטי, וכך נמנעות התנגשויות אם כמה מחלקות משתמשות באותוSavedStateHandle. (aosp/3063463)
גרסה 2.8.0
14 במאי 2024
androidx.lifecycle:lifecycle-*:2.8.0 מופץ. גרסה 2.8.0 מכילה את השמירות האלה.
שינויים חשובים מאז גרסה 2.7.0
-
LocalLifecycleOwnerהועבר מ-Compose UI אלlifecycle-runtime-composeכדי שאפשר יהיה להשתמש בממשקי העזר מבוססי-Compose שלו מחוץ ל-Compose UI. - הארטיפקט
lifecycle-runtime-composeמכיל עכשיו את ממשקי ה-APIdropUnlessResumedו-dropUnlessStarted, שמאפשרים לכם להשמיט קליקים או אירועים אחרים שמתרחשים גם אחרי שהערך שלLifecycleOwnerירד מתחת לערךLifecycle.Stateשצוין. לדוגמה, אפשר להשתמש ב-Compose Navigation כדי להימנע מטיפול באירועי קליקים אחרי שהתחילה כבר העברה למסך אחר:onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) } הפרמטר
ViewModel.viewModelScopeהוא עכשיו פרמטר של constructor שאפשר לשנות, וכך אפשר להוסיף dispatcher משלכם ו-SupervisorJob()או לשנות את ברירת המחדל באמצעותbackgroundScopeשזמין ב-runTest. (I2817c, b/264598574)class MyViewModel( // Make Dispatchers.Main the default, rather than Dispatchers.Main.immediate viewModelScope: CoroutineScope = Dispatchers.Main + SupervisorJob() ) : ViewModel(viewModelScope) { // Use viewModelScope as before, without any code changes } // Allows overriding the viewModelScope in a test fun Test() = runTest { val viewModel = MyViewModel(backgroundScope) }הקוד של
ViewModelנכתב מחדש ב-Kotlin ועכשיו נעשה בו שימוש ב-AutoClosableבמקום ב-Closeable. מעכשיו יש תמיכה בהוספה של אובייקטים מסוגAutoCloseableעםkeyשמאפשר לאחזר אותם באמצעותgetCloseable().קריאה ל-API של
LifecycleStartEffectול-API שלLifecycleResumeEffectללא מפתח היא עכשיו שגיאה, בהתאם לאותה קונבנציה כמו ב-API שלDisposableEffect, שהממשקים האלה הם שיקוף שלו.המאפיין
LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)הוצא משימוש לטובתLiveData.toPublisher(lifecycleOwner).התוספים של
lifecycle-livedata-core-ktxkotlin הועברו עכשיו למודולlifecycle-livedata-core.בוצע רפקטורינג ב-
NullSafeMutableLiveDataכדי למנוע הרבה תוצאות חיוביות כוזבות.
תאימות של מחזור החיים ל-Kotlin Multiplatform
ממשקי ה-API העיקריים של מחזור החיים ב-Lifecycle, LifecycleOwner, LifecycleObserver, Lifecycle.State, Lifecycle.Event ו-LifecycleRegistry נשלחים עכשיו בארטיפקטים שתואמים ל-Kotlin Multiplatform.
פריטי מידע שנוצרו בתהליך הפיתוח (Artifact) שהושפעו:
-
lifecycle-commonמעביר את רוב ממשקי ה-API אלcommonותומך ב-JVM וב-iOS בנוסף ל-Android. -
lifecycle-runtimeמעביר את רוב ממשקי ה-API אלcommonותומך ב-JVM וב-iOS בנוסף ל-Android. - התיקייה
lifecycle-runtime-ktxריקה עכשיו, כי כל ממשקי ה-API הועברו לתיקייהlifecycle-runtime. -
lifecycle-runtime-composeמעביר את כל ממשקי ה-API אלcommonושולח ארטיפקט של Android, בהתאם לתמיכה הרב-פלטפורמית שלandroidx.compose.
תאימות של ViewModel ל-Kotlin Multiplatform
הארטיפקט lifecycle-viewmodel וממשקי ה-API כמו ViewModel, ViewModelStore, ViewModelStoreOwner ו-ViewModelProvider נשלחים עכשיו בארטיפקטים שתואמים ל-Kotlin Multiplatform.
כדי להתאים את עצמכם לשינוי הזה, שיטות כמו אלה ב-ViewModelProvider שקיבלו java.lang.Class<T> מקבלות עכשיו שיטה מקבילה שמקבלת kotlin.reflect.KClass<T>.
התאימות הבינארית ב-Android נשמרה, אבל יש כמה שינויים בולטים בהשוואה בין Android API surface לבין common API surface:
- יצירת מופע של
ViewModelProviderמתבצעת עכשיו באמצעות ה-methodsViewModelProvider.create()ולא באמצעות קריאה ישירה ל-constructor שלו. ViewModelProvider.NewInstanceFactoryו-ViewModelProvider.AndroidViewModelFactoryזמינים רק ב-Android.- מומלץ להשתמש ב-Custom Factories כדי להרחיב את
ViewModelProvider.Factoryולהשתמש בשיטהcreateשמקבלתCreationExtrasאו להשתמש ב-Kotlin DSLviewModelFactory.
- מומלץ להשתמש ב-Custom Factories כדי להרחיב את
- שימוש ב-
ViewModelProviderללא מפעל בהתאמה אישית בפלטפורמות שאינן JVM יגרום ל-UnsupportedOperationException. בפלטפורמות JVM, התאימות נשמרת באמצעות שימוש בבונה ViewModel ללא ארגומנטים, אם לא סופקה יצירה בהתאמה אישית. -
viewModelScopeיחזור ל-EmptyCoroutineContextבפלטפורמות שבהןDispatchers.Mainלא זמין (למשל, Linux).
פריטי מידע שנוצרו בתהליך הפיתוח (Artifact) שהושפעו:
-
lifecycle-viewmodelמעביר את רוב ממשקי ה-API אלcommonותומך ב-JVM וב-iOS בנוסף ל-Android. - התיקייה
lifecycle-viewmodel-ktxריקה עכשיו, כי כל ממשקי ה-API הועברו לתיקייהlifecycle-viewmodel. -
lifecycle-viewmodel-composeמעביר את כל ממשקי ה-API אלcommonושולח ארטיפקט של Android, בהתאם לתמיכה הרב-פלטפורמית שלandroidx.compose.
שינויים בהתנהגות
-
InitializerViewModelFactory(כולל פונקציית הבנייהviewModelFactory) יחזיר עכשיוIllegalArgumentExceptionאם כבר נוסףinitializerעם אותוclazz: KClass<VM : ViewModel>. (Ic3a36)
בעיות מוכרות
- ל-
lifecycle-*:2.8.0נדרשת גרסת Compose מינימלית של 1.7.0-alpha05 (b/336842920).
גרסה 2.8.0-rc01
1 במאי 2024
androidx.lifecycle:lifecycle-*:2.8.0-rc01 מופץ. גרסה 2.8.0-rc01 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה שבה פרופיל Baseline של מחלקות
lifecycle-commonלא נארז בצורה תקינה. הם מרוכזים עכשיו ב-lifecycle-runtimeAAR. (aosp/3038274, b/322382422) - תוקן שינוי לא מכוון בסדר שבו מופעלת הפונקציה clear() במופעים של
AutoCloseableשמצורפים ל-ViewModel – הסדר הקודם שלaddCloseable(String, AutoCloseable), ואזaddClosable(AutoCloseable), ואזonCleared()שוחזר. (aosp/3041632) - שיפור התנהגות ברירת המחדל של יצירת
viewModelScopeבסביבות שולחן עבודה מקומיות ובסביבות JVM. (aosp/3039221)
External Contribution
- תודה ל-Victor Kropp על שיפור הבדיקה של השרשור הראשי ב-JVM Desktop. (aosp/3037116)
גרסה 2.8.0-beta01
17 באפריל 2024
androidx.lifecycle:lifecycle-*:2.8.0-beta01 מופץ. גרסה 2.8.0-beta01 מכילה את השמירות האלה.
תכונות חדשות
- ארטיפקט
lifecycle-runtime-composeתואם עכשיו ל-Kotlin Multiplatform, והקוד שלו הועבר אלcommon. בנוסף, הוא כולל ארטיפקט של Android, בהתאם לתמיכה במולטי פלטפורמות שלandroidx.compose. (If7a71, I4f4a0, b/331769623)
גרסה 2.8.0-alpha04
3 באפריל 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha04 מופץ. גרסה 2.8.0-alpha04 מכילה את השמירות האלה.
תכונות חדשות
- ארטיפקט
lifecycle-viewmodel-composeתואם עכשיו ל-Kotlin Multiplatform, והקוד שלו הועבר אלcommon. בנוסף, הוא כולל ארטיפקט של Android, בהתאם לתמיכה במולטי פלטפורמות שלandroidx.compose. כדי להתאים את עצמו לשינוי הזה, ה-methodviewModelשל Composable מקבל עכשיוKClassבנוסף ל-java.lang.Class. (b/330323282)
תיקוני באגים
- בוצע רפקטורינג ב-
NullSafeMutableLiveDataכדי למנוע הרבה תוצאות חיוביות כוזבות. (I2d8c1, Iafb18, I03463, I7ecef)
עדכון תלות
-
lifecycle-viewmodel-composeartifact תלוי עכשיו ב-Compose 1.6.0. - מחזור החיים תלוי עכשיו בכלי להתקנת פרופילים 1.3.1.
גרסה 2.8.0-alpha03
20 במרץ 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha03 מופץ. גרסה 2.8.0-alpha03 מכילה את השמירות האלה.
תכונות חדשות
הפרמטר
ViewModel.viewModelScopeהוא עכשיו פרמטר של constructor שאפשר לשנות, וכך אפשר להוסיף dispatcher משלכם ו-SupervisorJob()או לשנות את ברירת המחדל באמצעותbackgroundScopeשזמין ב-runTest. (I2817c, b/264598574)class MyViewModel( // Make Dispatchers.Main the default, rather than Dispatchers.Main.immediate viewModelScope: CoroutineScope = Dispatchers.Main + SupervisorJob() ) : ViewModel(viewModelScope) { // Use viewModelScope as before, without any code changes } // Allows overriding the viewModelScope in a test fun Test() = runTest { val viewModel = MyViewModel(backgroundScope) }
תאימות ל-Kotlin Multiplatform
הארטיפקט lifecycle-viewmodel וממשקי ה-API כמו ViewModel, ViewModelStore, ViewModelStoreOwner ו-ViewModelProvider נשלחים עכשיו בארטיפקטים שתואמים ל-Kotlin Multiplatform. (b/214568825)
כדי להתאים את עצמכם לשינוי הזה, שיטות כמו אלה ב-ViewModelProvider שקיבלו java.lang.Class<T> מקבלות עכשיו שיטה מקבילה שמקבלת kotlin.reflect.KClass<T>.
התאימות הבינארית ב-Android נשמרה, אבל יש כמה שינויים בולטים בהשוואה בין Android API surface לבין common API surface:
- יצירת מופע של
ViewModelProviderמתבצעת עכשיו באמצעות ה-methodsViewModelProvider.create()ולא באמצעות קריאה ישירה ל-constructor שלו. ViewModelProvider.NewInstanceFactoryו-ViewModelProvider.AndroidViewModelFactoryזמינים רק ב-Android.- מומלץ להשתמש ב-Custom Factories כדי להרחיב את
ViewModelProvider.Factoryולהשתמש בשיטהcreateשמקבלתCreationExtrasאו להשתמש ב-Kotlin DSLviewModelFactory.
- מומלץ להשתמש ב-Custom Factories כדי להרחיב את
- שימוש ב-
ViewModelProviderללא מפעל בהתאמה אישית בפלטפורמות שאינן JVM יגרום ל-UnsupportedOperationException. בפלטפורמות JVM, התאימות נשמרת באמצעות שימוש בבונה ViewModel ללא ארגומנטים, אם לא סופקה יצירה בהתאמה אישית. -
viewModelScopeיחזור ל-EmptyCoroutineContextבפלטפורמות שבהןDispatchers.Mainלא זמין (למשל, Linux).
שינויים בהתנהגות
-
InitializerViewModelFactory(כולל פונקציית הבנייהviewModelFactory) יחזיר עכשיוIllegalArgumentExceptionאם כבר נוסףinitializerעם אותוclazz: KClass<VM : ViewModel>. (Ic3a36)
תיקוני באגים
-
ViewModel.getCloseableמטפל עכשיו במפתחות כפולים: אם ל-keyכבר משויך משאבAutoCloseable, המשאב הישן יוחלף וייסגר באופן מיידי. (Ibeb67) - הגישה אל
viewModelScopeשלViewModelבטוחה עכשיו לשימוש בכמה תהליכים בו-זמנית. (If4766, b/322407038)
External Contribution
-
LocalLifecycleOwnerהועבר מ-Compose UI אל lifecycle-runtime-compose כדי שאפשר יהיה להשתמש בממשקי העזר מבוססי-Compose שלו מחוץ ל-Compose UI. תודה ל-Jake Wharton על התרומה. (I6c41b, b/328263448)
גרסה 2.8.0-alpha02
21 בפברואר 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha02 מופץ. גרסה 2.8.0-alpha02 מכילה את השמירות האלה.
תכונות חדשות
- נוספו ממשקי ה-API
dropUnlessResumedו-dropUnlessStartedשמאפשרים לכם להשמיט קליקים או אירועים אחרים שמתרחשים גם אחרי שערך ה-LifecycleOwnerיורד מתחת לערךLifecycle.Stateשצוין. לדוגמה, אפשר להשתמש בזה עם Navigation Compose כדי להימנע מטיפול באירועי קליקים אחרי שהתחיל מעבר למסך אחר:onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }(Icba83, b/317230685)
המרות של Kotlin
-
ViewModelנכתב עכשיו ב-Kotlin (I16f26, b/214568825) - העברנו את
lifecycle-viewmodel-ktxהתוספים של kotlin למודול מחזור החיים הבסיסי. (Id787b, b/274800183) - העברנו את
lifecycle-runtime-ktxהתוספים של kotlin למודול מחזור החיים הבסיסי. (Ic3686, b/274800183) - העברנו את
lifecycle-livedata-core-ktxהתוספים של kotlin למודול מחזור החיים הבסיסי. (I54a3d, b/274800183)
תאימות ל-Kotlin Multiplatform
- ממשקי ה-API העיקריים של מחזור החיים ב-
Lifecycle,LifecycleOwner,LifecycleObserver,Lifecycle.State,Lifecycle.Eventו-LifecycleRegistryנשלחים עכשיו בארטיפקטים שתואמים ל-Kotlin Multiplatform. (b/317249252)
שינויים ב-API
- קריאה ל-API של
LifecycleStartEffectול-API שלLifecycleResumeEffectללא מפתח היא עכשיו שגיאה, בהתאם לאותה קונבנציה כמו ב-API שלDisposableEffect, שהממשקים האלה הם שיקוף שלו. (Ib0e0c, b/323518079) -
ViewModelמשתמש עכשיו ב-AutoCloseableבמקום ב-Closeable. זהו שינוי שתואם לגרסאות קודמות. (I27f8e, b/214568825) - המאפיין
LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)הוצא משימוש לטובתLiveData.toPublisher(lifecycleOwner). (Iabe29, b/262623005)
External Contribution
- תודה לאיוון מטקוב מ-Jetbrains על העזרה בהעברת Lifecycle ל-Kotlin Multiplatform. (aosp/2926690, I0c5ac, If445d)
גרסה 2.8.0-alpha01
24 בינואר 2024
androidx.lifecycle:lifecycle-*:2.8.0-alpha01 מופץ. גרסה 2.8.0-alpha01 מכילה את השמירות האלה.
תכונות חדשות
-
ViewModelתומך עכשיו בהוספת אובייקטים מסוגCloseableעםkeyשמאפשר לאחזר אותם באמצעותgetCloseable(). (I3cf63)
גרסה 2.7
גרסה 2.7.0
10 בינואר 2024
androidx.lifecycle:lifecycle-*:2.7.0 מופץ. גרסה 2.7.0 מכילה את השמירות האלה.
שינויים חשובים מאז גרסה 2.6.0
-
TestLifecycleOwnerכולל עכשיו פונקציית השהיהsetCurrentState()שמבטיחה ששינוי המצב וכל הקריאות החוזרות שלLifecycleObserverיושלמו לפני החזרה. חשוב לציין שבניגוד להגדרת המאפייןcurrentStateישירות, הפונקציה הזו לא משתמשת ב-runBlocking, ולכן אפשר להשתמש בה בבטחה בתוך קורוטינה, כמו זו שמסופקת על ידיrunTest. - התוספים
LiveDataשלmapושלswitchMapמשקפים עכשיו את ההתנהגות שלdistinctUntilChanged– אם ל-LiveDataמוגדרvalue, הפונקציהmap/switchMapתופעל באופן מיידי כדי לאכלס אתvalueשלLiveDataשמוחזר. ההגדרה הזו מבטיחה שהערך הראשוני יוגדר כחלק מהקומפוזיציה הראשונה (כשמשתמשים בה עםobserveAsState()), אבל היא לא משנה את התנהגות התצפית – עדיין יחולו רק עדכונים של ערכים מהמקורLiveDataאחרי שתתחילו לצפות ב-LiveData. - בגרסה הזו תוקנה בעיה שבה
SavedStateHandleלא שחזר כמו שצריך מחלקותParcelableמותאמות אישית אחרי השבתת תהליך ויצירה מחדש. בגלל מידע על סוגים שאבד ב-Android framework, מערכים של Parcelable מותאמים אישית דורשים עבודה נוספת (יצירה ידנית של מערך מוקלד מהסוג הנכון), ובמסמכי התיעוד בנושאget,getLiveDataו-getStateFlowמצוינת עכשיו המגבלה הזו באופן ספציפי. - הוסרו כללי השמירה של ProGuard שמשויכים ל-
LifecycleObserver. המשמעות היא שקוד שעבר ProGuard ורוצה להשתמש בממשקי API באמצעות רפלקציה (למשל באמצעות ההערה@OnLifecycleEventשיצאה משימוש לפני זמן רב) יצטרך לספק כללי שמירה משלו לתרחיש השימוש הספציפי שלו.
Lifecycle Event Observability
- במקום להשתמש ב-
LifecycleEventObserver, אפשר עכשיו לצפות ב-FlowשלLifecycle.Eventבאמצעות שיטת ההרחבהLifecycle.asFlow(). - משתמשים ב-Jetpack Compose יכולים עכשיו להשתמש ב-
LifecycleEventEffectכדי להפעיל תופעות לוואי של Compose על סמךLifecycle.Event.
@Composable
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
LifecycleEventEffect(Lifecycle.Event.ON_RESUME) {
viewModel.refreshData()
}
// …
}
- משתמשי Jetpack Compose יכולים להשתמש ב-
LifecycleStartEffectוב-LifecycleResumeEffectכדי לטפל בזוגות של אירועים – התחלה ועצירה, והמשך והשהיה, בהתאמה. ה-API הזה זהה ל-API שמופיע ב-DisposableEffect, והוא מתאים למקרים שבהם צריך לבטל את השינוי שבוצע כשהמצב עולה, כשחוזרים למצב הקודם.
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
LifecycleStartEffect(viewModel) {
val timeTracking = viewModel.startTrackingTimeOnScreen()
onStopOrDispose {
timeTracking.stopTrackingTimeOnScreen()
}
}
// …
}
מידע נוסף זמין במאמר הפעלת קוד באירועים של מחזור החיים.
מעקב אחר מצב מחזור החיים
- אפשר עכשיו לראות את
Lifecycle.Stateהנוכחי באמצעות הנכסLifecycle.currentStateFlow, שמחזירStateFlowכאשרvalueהואLifecycle.Stateהנוכחי. - משתמשים ב-Jetpack Compose יכולים להשתמש בתוסף
Lifecycle.currentStateAsState()כדי לחשוף אתLifecycle.Stateישירות כ-ComposeState. הפונקציה הזו שוות ערך לפונקציהlifecycle.currentStateFlow.collectAsState()(והיא חלופה קצרה יותר).
מידע נוסף זמין במאמר בנושא איסוף נתונים על מצב מחזור החיים באמצעות תהליכי עבודה.
גרסה 2.7.0-rc02
13 בדצמבר 2023
androidx.lifecycle:lifecycle-*:2.7.0-rc02 מופץ. גרסה 2.7.0-rc02 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה שבה
SavedStateHandleלא שחזר כראוי מחלקותParcelableמותאמות אישית אחרי השבתת תהליך ויצירה מחדש. בגלל מידע על סוגים שאבד ב-Android framework, מערכים של Parcelable מותאמים אישית דורשים עבודה נוספת (יצירה ידנית של מערך מוקלד מהסוג הנכון), ובמסמכי התיעוד בנושאget,getLiveDataו-getStateFlowמצוינת עכשיו המגבלה הזו באופן ספציפי. (I0b55a)
גרסה 2.7.0-rc01
15 בנובמבר 2023
androidx.lifecycle:lifecycle-*:2.7.0-rc01 מופץ. גרסה 2.7.0-rc01 מכילה את השמירות האלה.
תיקוני באגים
-
LifecycleStartEffectו-LifecycleResumeEffectעכשיו משחררים את בלוק האפקט ויוצרים אותו מחדש בצורה נכונה אםLifecycleOwnerמשתנה. (Ia25c6)
גרסה 2.7.0-beta01
1 בנובמבר 2023
הגרסה androidx.lifecycle:lifecycle-*:2.7.0-beta01 יוצאת ללא שינויים. גרסה 2.7.0-beta01 מכילה את השמירות האלה.
- שינוי במספר גרסת הבטא, בלי שינויים משמעותיים בגרסת ההפצה הזו.
גרסה 2.7.0-alpha03
18 באוקטובר 2023
androidx.lifecycle:lifecycle-*:2.7.0-alpha03 מופץ. גרסה 2.7.0-alpha03 מכילה את השמירות האלה.
תכונות חדשות
-
lifecycle-runtime-testingכולל עכשיו בדיקת כלי לאיתור שגיאות בקוד (lint) חדשה כדי למנוע הגדרה שלLifecycle.StateשלTestLifecycleOwnerבאמצעות השדהcurrentStateכשנמצאים בתוך שגרת המשך (coroutine). בדיקת Lint מציעה עכשיו להשהות אתsetCurrentState, מה שמאפשר להגדיר אתLifecycle.Stateבלי לחסום. (Icf728, b/297880630)
תיקוני באגים
- תוקנה בעיה ב-
LiveData.switchMapשבה החזרת אותו מופע שלLiveDataגם בשיחה הראשונית וגם בשיחה הבאה מנעה את הוספת המופע שלLiveDataכמקור. (Ibedcba7)
גרסה 2.7.0-alpha02
6 בספטמבר 2023
androidx.lifecycle:lifecycle-*:2.7.0-alpha02 מופץ. גרסה 2.7.0-alpha02 מכילה את השמירות האלה.
תכונות חדשות
-
TestLifecycleOwnerכולל עכשיו את פונקציית ההשהיהsetCurrentState()כדי לתת למשתמשים את האפשרות להשתמש ב-TestLifecycleOwnerמתוך קורוטינה כמו זו שמסופקת על ידיrunTest. (I329de, b/259344129)
שינויים ב-API
- כל הקבצים מהמודולים
lifecycle-livedata-ktxהועברו למודול הראשיlifecycle-livedata. (I10c6f, b/274800183)
שינויים בהתנהגות
- התוספים
LiveData.map()ו-LiveData.switchMap()מגדירים עכשיו אתvalueשלLiveDataשמוחזר אם ל-LiveDataהקודם הוגדר ערך, וכך מוודאים של-LiveData שמתקבל יש את המצב הנכון בקומפוזיציה הראשונית ב-Jetpack Compose. (I91d2b, b/269479952) -
ViewModel'saddCloseable()now immediately closes theCloseableif theViewModelhas already received a call toonCleared(). (I4712e, b/280294730)
תיקוני באגים
- מתוך Lifecycle
2.6.2: תוקנה בעיה שבהSavedStateHandleלא שוחזר בצורה תקינה אחרי שהתהליך הסתיים, אם המצב שוחזר,save()נקרא בלי לשמור את המצב ב-SavedStateRegistryהאב, ואז המצב שוחזר שוב. התיקון הזה משפר את האינטראקציה ביןrememberSaveableלביןNavHostשל Navigation Compose. (aosp/2729289)
גרסה 2.7.0-alpha01
26 ביולי 2023
androidx.lifecycle:lifecycle-*:2.7.0-alpha01 מופץ. גרסה 2.7.0-alpha01 מכילה את השמירות האלה.
שינויים ב-API
- אפשר עכשיו לצפות ב-
Lifecycle.StateבאמצעותLifecycle.currentStateFlow, שמחזירStateFlowכאשרvalueהואLifecycle.Stateהנוכחי. (Ib212d, b/209684871) Lifecycle.Events can now able to be observed as aFlowwithLifecycle.asFlow().(If2c0f, b/176311030)LifecycleResumeEffectנוסף API להפעלת רכיבי ComposeSideEffects על סמך קריאות חוזרות (callback) של אירועים מסוגLifecycle.Event.ON_RESUMEו-Lifecycle.Event.ON_PAUSE. (I60386, b/235529345)LifecycleStartEffectנוסף API להפעלתSideEffects של יצירת מוזיקה על סמךLifecycle.Event.ON_STARTוLifecycle.Event.ON_STOPקריאות חוזרות (callback) לאירועים. (I5a8d1, b/235529345)- נוסף API להפעלת יצירת
SideEffects ב-Compose על סמךLifecycle.Event.LifecycleEventEffect(Ic9794, b/235529345) - התוסף
Lifecycle.collectAsState()נוסף כדי לחשוף ישירות אתLifecycle.Stateכ-ComposeState. הפונקציה הזו שוות ערך לפונקציהlifecycle.currentStateFlow.collectAsState()(והיא חלופה קצרה יותר). (I11015, b/235529345)
תיקוני באגים
- התוסף
LiveData.distinctUntilChanged()מגדיר עכשיו אתvalueשלLiveDataשמוחזר אם כבר הוגדר ערך ל-LiveDataהקודם. השינוי הזה לא משפיע על התנהגות התצפית – ערכים מעודכנים מהמקורLiveDataיחולו רק אחרי שתתחילו לצפות בערךLiveDataשמוחזר מ-distinctUntilChanged(). (Ib482f) - הוסרו כללי השמירה של ProGuard שמשויכים ל-
LifecycleObserver. המשמעות היא שקוד שעבר ProGuard ורוצה להשתמש בממשקי API באמצעות רפלקציה, יצטרך לספק כללי שמירה משלו לתרחיש השימוש הספציפי שלו. (Ia12fd)
גרסה 2.6
גרסה 2.6.2
6 בספטמבר 2023
androidx.lifecycle:lifecycle-*:2.6.2 מופץ. גרסה 2.6.2 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה שבה
SavedStateHandleלא שוחזר בצורה תקינה אחרי שהתהליך הסתיים אם המצב שוחזר,save()הופעל בלי לשמור את המצב ב-SavedStateRegistryהאב, ואז המצב שוחזר שוב. התיקון הזה משפר את האינטראקציה ביןrememberSaveableלביןNavHostשל Navigation Compose. (aosp/2729289)
גרסה 2.6.1
22 במרץ 2023
androidx.lifecycle:lifecycle-*:2.6.1 מופץ. גרסה 2.6.1 מכילה את השמירות האלה.
עדכונים של תלות
-
lifecycle-viewmodel-savedstateתלוי עכשיו ב-SavedState1.2.1. (cd7251) - מחזור החיים תלוי עכשיו ב-ProfileInstaller
1.3.0. (f9d30b)
גרסה 2.6.0
8 במרץ 2023
androidx.lifecycle:lifecycle-*:2.6.0 מופץ. גרסה 2.6.0 מכילה את השמירות האלה.
שינויים חשובים מאז גרסה 2.5.0
-
LiveDataכולל עכשיו את המאפיין החדשisInitializedשמציין אם אי פעם הוגדר ערך מפורש במאפייןLiveData. כך אפשר להבחין בין המצב שבו הפונקציהliveData.valueמחזירה את הערךnullכי אף פעם לא הוגדר ערך, לבין המצב שבו היא מחזירה את הערך המפורשnull. -
MediatorLiveDataכולל עכשיו בנאי להגדרת ערך התחלתי. - נוספה תוסף חדש ב-
StateFlowוב-FlowשלcollectAsStateWithLifecycle()שאוסף נתונים מתוך תהליכים ומציג את הערך האחרון שלו כ-Compose State באופן שמתחשב במחזור החיים. - השיטות
Lifecycle.launchWhenXו-Lifecycle.whenXהוצאו משימוש כי השימוש ב-dispatcher להשהיה עלול לגרום לבזבוז משאבים במקרים מסוימים. מומלץ להשתמש ב-Lifecycle.repeatOnLifecycle. מידע נוסף על השעיה חד-פעמית של העבודה זמין בהסבר הזה על הסיבות לכך שהפעולה הזו לא בטוחה. - המרת Kotlin – מספר גדול של מחלקות Lifecycle הומרו ל-Kotlin. כל הכיתות שהומרו עדיין שומרות על התאימות הבינארית שלהן לגרסאות קודמות. במחלקות הבאות יש שינויים שלא תואמים למקור עבור מחלקות שנכתבו ב-Kotlin:
ViewTreeLifecycleOwner, LiveDataReactiveStreams, HasDefaultViewModelProviderFactory, ViewTreeViewModelStoreOwner, Transformations, ViewModelStoreOwner, LifecycleOwner
בטבלה הבאה מוצגות המרות המקור לגרסה החדשה של מחזור החיים.
| Lifecycle 2.5 | מחזור חיים 2.5 (KTX) | מחזור חיים 2.6 |
|---|---|---|
Transformations.switchMap(liveData) {...} |
liveData.switchMap {...} |
liveData.switchMap {...} |
Transformations.map(liveData) {...} |
liveData.map {...} |
liveData.map {...} |
Transformations.distinctUntilChanged(liveData) {...} |
liveData.distinctUntilChanged{...} |
liveData.distinctUntilChanged{...} |
LiveDataReactiveStreams.fromPublisher(publisher) |
publisher.toLiveData() |
publisher.toLiveData() |
LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData) |
liveData.toPublisher(lifecycleOwner) |
liveData.toPublisher(lifecycleOwner) |
override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory = factory |
override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory = factory |
override val defaultViewModelProviderFactory = factory |
override fun getDefaultViewModelCreationExtras(): CreationExtras = extras |
override fun getDefaultViewModelCreationExtras(): CreationExtras = extras |
override val defaultViewModelProviderCreationExtras = extras |
ViewTreeLifecycleOwner.set(view, owner) |
ViewTreeLifecycleOwner.set(view, owner) |
view.setViewTreeLifecycleOwner(owner) |
ViewTreeLifecycleOwner.get(view) |
view.findViewTreeLifecycleOwner() |
view.findViewTreeLifecycleOwner() |
override fun getViewModelStore(): ViewModelStore = store |
override fun getViewModelStore(): ViewModelStore = store |
override val viewModelStore: ViewModelStore = store |
override fun getLifecycle(): Lifecycle = registry |
override fun getLifecycle(): Lifecycle = registry |
override val lifecycle: Lifecycle get() = registry |
- המאפיין המציין אם ערך יכול להיות ריק (nullability) של שיטת
onChangedשלObserverשנוצר ב-Kotlin תואם עכשיו למאפיין המציין אם ערך יכול להיות ריק של הסוג הגנרי. אם רוצים ש-Observer.onChanged()יקבל סוג שניתן להקצאה, צריך ליצור מופע שלObserverעם סוג שניתן להקצאה. - גם המחלקות האלה הומרו ל-Kotlin, אבל הן עדיין תואמות למקור:
DefaultLifecycleObserver,LifecycleEventObserver,Lifecycle,LifecycleRegistry,LifecycleObserver,ViewModelStore,AndroidViewModel,AbstractSavedStateViewModelFactory,LifecycleService,ServiceLifecycleDispatcherו-ProcessLifecycleOwner
גרסה 2.6.0-rc01
22 בפברואר 2023
androidx.lifecycle:lifecycle-*:2.6.0-rc01 מופץ. גרסה 2.6.0-rc01 מכילה את השמירות האלה.
תיקוני באגים
- התוסף
LiveData.distinctUntilChanged()מגדיר עכשיו אתvalueשלLiveDataשמוחזר אם כבר הוגדר ערך ל-LiveDataהקודם. השינוי הזה לא משפיע על התנהגות התצפית – ערכים מעודכנים מהמקורLiveDataיחולו רק אחרי שתתחילו לצפות בערךLiveDataשמוחזר מ-distinctUntilChanged(). (Ib482f)
גרסה 2.6.0-beta01
8 בפברואר 2023
androidx.lifecycle:lifecycle-*:2.6.0-beta01 מופץ. גרסה 2.6.0-beta01 מכילה את השמירות האלה.
המרות של Kotlin
-
LifecycleOwnerנכתב עכשיו ב-Kotlin. זהו שינוי לא תואם למקור עבור מחלקות שנכתבו ב-Kotlin – עכשיו צריך לבטל את ההגדרה של המאפייןlifecycleבמקום להטמיע את הפונקציהgetLifecycle()הקודמת. (I75b4b, b/240298691) - האפליקציה
ViewModelStoreOwnerכתובה עכשיו ב-Kotlin. זהו שינוי לא תואם למקור עבור מחלקות שנכתבו ב-Kotlin – עכשיו צריך לבטל את ההגדרה של המאפייןviewModelStoreבמקום להטמיע את הפונקציהgetViewModelStore()הקודמת. (I86409, b/240298691) - התוסף Kotlin ב-
LifecycleOwnerשמספק את השדהlifecycleScopeהועבר מ-lifecycle-runtime-ktxלארטיפקטlifecycle-common. (I41d78, b/240298691) - התוסף Kotlin ב-
Lifecycleשמספק את השדהcoroutineScopeהועבר לארטיפקטlifecycle-commonמ-lifecycle-runtime-ktx. (Iabb91, b/240298691)
גרסה 2.6.0-alpha05
25 בינואר 2023
androidx.lifecycle:lifecycle-*:2.6.0-alpha05 מופץ. גרסה 2.6.0-alpha05 מכילה את השמירות האלה.
המרות של Kotlin
-
Transformationsנכתב עכשיו ב-Kotlin. זהו שינוי שגורם לאי-תאימות לקוד המקור עבור מחלקות שנכתבו ב-Kotlin והשתמשו ישירות בתחביר כמוTransformations.map– קוד Kotlin חייב עכשיו להשתמש בתחביר של שיטת ההרחבה של Kotlin, שהיה זמין בעבר רק כשמשתמשים ב-lifecycle-livedata-ktx. כשמשתמשים בשפת התכנות Java, הגרסאות של השיטות האלה שמקבלות שיטתandroidx.arch.core.util.Functionהוצאו משימוש והוחלפו בגרסאות שמקבלות שיטתFunction1של Kotlin. השינוי הזה שומר על תאימות בינארית. (I8e14f) -
ViewTreeViewModelStoreOwnerנכתב עכשיו ב-Kotlin. זהו שינוי שגורם לאי-תאימות למקור עבור המחלקות שנכתבו ב-Kotlin – עכשיו צריך לייבא ישירות את שיטות ההרחבה של Kotlin ב-Viewשלandroidx.lifecycle.setViewTreeViewModelStoreOwnerו-androidx.lifecycle.findViewTreeViewModelStoreOwnerולהשתמש בהן כדי להגדיר ולמצוא בעלים שהוגדר בעבר. היא תואמת לבינארי ונשארת תואמת למקור עבור הטמעות שנכתבו בשפת התכנות Java. (Ia06d8, Ib22d8, b/240298691) - הממשק של
HasDefaultViewModelProviderFactoryנכתב עכשיו ב-Kotlin. זהו שינוי שגורם לאי-תאימות למקור בכיתות שנכתבו ב-Kotlin – עכשיו צריך לבטל את ההגדרה של המאפייניםdefaultViewModelProviderFactoryו-defaultViewModelCreationExtrasבמקום להטמיע את הפונקציות התואמות הקודמות. (Iaed9c, b/240298691) -
Observerנכתב עכשיו ב-Kotlin. השיטהonChanged()שלה משתמשת עכשיו בשםvalueלפרמטר שלה. (Iffef2, I4995e, b/240298691) -
AndroidViewModel,AbstractSavedStateViewModelFactory,LifecycleService,ServiceLifecycleDispatcherו-ProcessLifecycleOwnerנכתבו עכשיו ב-Kotlin (I2e771, Ibae40, I160d7, I08884, I1cda7, b/240298691)
גרסה 2.6.0-alpha04
11 בינואר 2023
androidx.lifecycle:lifecycle-*:2.6.0-alpha04 מופץ. גרסה 2.6.0-alpha04 מכילה את השמירות האלה.
תכונות חדשות
-
LiveDataכולל עכשיו את המאפיין החדשisInitializedשמציין אם אי פעם הוגדר ערך מפורש במאפייןLiveData. כך אפשר להבחין בין המצב שבו הפונקציהliveData.valueמחזירה את הערךnullכי אף פעם לא הוגדר ערך, לבין המצב שבו היא מחזירה את הערך המפורשnull. (Ibd018)
שינויים ב-API
- ממשקי ה-API של
collectAsStateWithLifecycle()lifecycle-runtime-composeכבר לא בסטטוס ניסיוני. (I09d42, b/258835424) - השיטות
Lifecycle.launchWhenXו-Lifecycle.whenXהוצאו משימוש כי השימוש ב-dispatcher להשהיה עלול לגרום לבזבוז משאבים במקרים מסוימים. מומלץ להשתמש ב-Lifecycle.repeatOnLifecycle. (Iafc54, b/248302832)
המרות של Kotlin
-
ViewTreeLifecycleOwnerנכתב עכשיו ב-Kotlin. זהו שינוי שגורם לאי-תאימות למקור עבור המחלקות שנכתבו ב-Kotlin – עכשיו צריך לייבא ישירות את שיטות ההרחבה של Kotlin ולהשתמש בהן ב-Viewשלandroidx.lifecycle.setViewTreeLifecycleOwnerו-androidx.lifecycle.findViewTreeLifecycleOwnerכדי להגדיר ולמצוא בעלים שהוגדר בעבר. הוא מחליף את תוסף Kotlin הקודם ב-lifecycle-runtime-ktx. היא תואמת לבינארי ונשארת תואמת למקור עבור הטמעות שנכתבו בשפת התכנות Java. (I8a77a, I5234e, b/240298691) -
LiveDataReactiveStreamsנכתב עכשיו ב-Kotlin. התוספים של Kotlin שהיו קודם ב-lifecycle-reactivestreams-ktxהועברו למודולlifecycle-reactivestreamsוהפכו לממשק העיקרי לקוד שנכתב ב-Kotlin. זהו שינוי שגורם לאי-תאימות למקור בקוד שנכתב ב-Kotlin, אם לא השתמשתם כבר בממשקי ה-API של שיטת ההרחבה של Kotlin. (I2b1b9, I95d22, b/240298691) -
DefaultLifecycleObserver,LifecycleEventObserver,Lifecycle,LifecycleRegistry,LifecycleObserverו-ViewModelStoreנכתבו עכשיו ב-Kotlin (Iadffd, (I60034, I8c52c, I9593d, I01fe1, I59a23, b/240298691)
תיקוני באגים
SavedStateHandleלא קורס יותר עםClassCastExceptionכשמתקשרים אלget()עם סוג לא נכון של class. (I6ae7c)
גרסה 2.6.0-alpha03
24 באוקטובר 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha03 מופץ. גרסה 2.6.0-alpha03 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה שבה אילוצים בין מודולים שונים של מחזור החיים לא פעלו כמצופה. (I18d0d, b/249686765)
- השגיאות שמוחזרות על ידי
LifecycleRegistry.moveToState()כוללות עכשיו הודעות שגיאה מועילות יותר, שמיידעות את המפתחים לגבי הרכיב שגורם לשגיאה. (Idf4b2, b/244910446)
גרסה 2.6.0-alpha02
7 בספטמבר 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha02 מופץ. גרסה 2.6.0-alpha02 מכילה את השמירות האלה.
שינויים ב-API
-
MediatorLiveDataכולל עכשיו בנאי להגדרת ערך התחלתי. (Ib6cc5, b/151244085)
תיקוני באגים
- פריטי מידע שנוצרו בתהליך פיתוח (Artifact) של
Lifecycleכוללים עכשיו אילוצים שמבטיחים שכל פריטי המידע שנוצרו בתהליך פיתוח שקשורים למחזור החיים משתמשים באותה גרסה, ומשדרגים אוטומטית תלויות אחרות כשמשדרגים אחת מהן. b/242871265 -
FlowLiveData.asFlow()יוצר עכשיוcallbackFlowבמקום להשתמש בהטמעה משלו שלChannelכדי להבטיח בטיחות בשרשור ושמירה על ההקשר. (I4a8b2, b/200596935) - הפונקציה
FlowLiveDataשלasLiveDataתשמור עכשיו את הערך הראשוני שלStateFlowכשיוצרים את האובייקט החדשLiveData. (I3f530, b/157380488) - מתוך מחזור החיים
2.5.1: הטמעות מותאמות אישית שלAndroidViewModelFactoryקוראות עכשיו לפונקציהcreate(modelClass)בצורה נכונה כשמשתמשים בבונה עם שמירת מצב עםLifecycleגרסה 2.4 ומעלה (I5b315, b/238011621)
גרסה 2.6.0-alpha01
29 ביוני 2022
androidx.lifecycle:lifecycle-*:2.6.0-alpha01 מופץ. גרסה 2.6.0-alpha01 מכילה את השמירות האלה.
תכונות חדשות
- נוספה תוסף חדש ב-
StateFlowוב-FlowשלcollectAsStateWithLifecycleשאוסף נתונים מתוך תהליכים ומציג את הערך האחרון שלו כ-Compose State באופן שמתחשב במחזור החיים. הנתונים של ה-Flow נאספים והערך של הפליטה החדשה מוגדר לערך של ה-State כשהמחזור החיים נמצא לפחות בשלב מסויםLifecycle.State. אם מחזור החיים יורד מתחת ל-Lifecycle.State, איסוף הנתונים של התהליך מופסק והערך של המצב לא מתעדכן. (I1856e, b/230557927)
גרסה 2.5
גרסה 2.5.1
27 ביולי 2022
androidx.lifecycle:lifecycle-*:2.5.1 מופץ. גרסה 2.5.1 מכילה את השמירות האלה.
תיקוני באגים
- הטמעות מותאמות אישית של
AndroidViewModelFactoryקוראות עכשיו לפונקציהcreate(modelClass)בצורה נכונה כשמשתמשים בבונהAndroidViewModelFactoryעם שמירת מצב עםLifecycleגרסה 2.4 ואילך. (I5b315, b/238011621)
גרסה 2.5.0
29 ביוני 2022
androidx.lifecycle:lifecycle-*:2.5.0 מופץ. גרסה 2.5.0 מכילה את השמירות האלה.
שינויים חשובים מאז גרסה 2.4.0
SavedStateHandleמציע עכשיו API שלgetStateFlow()שמחזיר KotlinStateFlowלמעקב אחרי שינויים בערכים, כחלופה לשימוש ב-LiveData.ViewModel CreationExtras – כשכותבים
ViewModelProvider.Factoryמותאם אישית, כבר לא צריך להרחיב אתAndroidViewModelFactoryאו אתAbstractSavedStateViewModelFactoryכדי לקבל גישה ל-Applicationאו ל-SavedStateHandle, בהתאמה. במקום זאת, השדות האלה מסופקים לכל מחלקת משנהViewModelProvider.FactoryבתורCreationExtrasבאמצעות העמסת היתר החדשה שלcreate:create(Class<T>, CreationExtras). התוספים האלה מסופקים באופן אוטומטי על ידי Activity או Fragment כשמשתמשים ב-Activity1.5.0וב-Fragment1.5.0, בהתאמה.class CustomFactory : ViewModelProvider.Factory { override fun <T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras): T { return when (modelClass) { HomeViewModel::class -> { // Get the Application object from extras val application = checkNotNull(extras[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY]) // Pass it directly to HomeViewModel HomeViewModel(application) } DetailViewModel::class -> { // Create a SavedStateHandle for this ViewModel from extras val savedStateHandle = extras.createSavedStateHandle() DetailViewModel(savedStateHandle) } else -> throw IllegalArgumentException("Unknown class $modelClass") } as T } }
lifecycle-viewmodelמספקת עכשיוviewModelFactoryKotlin DSL שמאפשרת להגדיר אתViewModelProvider.Factoryבאמצעות מאתחלי lambda אחד או יותר, אחד לכל מחלקה ספציפית שלViewModelשהמפעל המותאם אישית שלכם תומך בה, באמצעותCreationExtrasכמקור הנתונים הראשי.val customFactory = viewModelFactory { // The return type of the lambda automatically sets what class this lambda handles initializer { // Get the Application object from extras provided to the lambda val application = checkNotNull(get(ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY)) HomeViewModel(application) } initializer { val savedStateHandle = createSavedStateHandle() DetailViewModel(savedStateHandle) } }
lifecycle-viewmodel-composeמציע עכשיו API שלviewModel()שמקבל פונקציית למדה ליצירת מופע שלViewModelבלי לדרוש יצירה שלViewModelProvider.Factoryבהתאמה אישית.// Within a @Composable, you can now skip writing a custom Factory // and instead write a lambda to do the initialization of your ViewModel val detailViewModel = viewModel { // This lambda is only called the first time the ViewModel is created // and all CreationExtras are available inside the lambda val savedStateHandle = createSavedStateHandle() DetailViewModel(savedStateHandle) }SavedStateHandle Compose Saver Integration – ארטיפקט
lifecycle-viewmodel-composeמכיל עכשיו ממשקי API ניסיוניים חדשים ב-SavedStateHandle.saveableשמאפשרים התנהגות כמוrememberSaveableשמגובה על ידיSavedStateHandleשל ViewModel.class ListScreenViewModel(handle: SavedStateHandle): ViewModel() { // This value survives both configuration changes and process death and recreation val editMode by handle.saveable { mutableStateOf(false) } }נוספו
addCloseable()API ועומס יתר חדש של בנאי שמאפשרים להוסיף אובייקט אחד או יותר שלCloseableל-ViewModelשייסגר כשה-ViewModelינוקה, בלי שיהיה צורך בפעולה ידנית ב-onCleared().לדוגמה, כדי ליצור היקף של שגרת המשך (coroutine) שאפשר להוסיף ל-ViewModel, אבל לשלוט בו באמצעות בדיקה, אפשר ליצור
CoroutineScopeשמטמיע אתCloseable:class CloseableCoroutineScope( context: CoroutineContext = SupervisorJob() + Dispatchers.Main.immediate ) : Closeable, CoroutineScope { override val coroutineContext: CoroutineContext = context override fun close() { coroutineContext.cancel() } }אפשר להשתמש בו ב
ViewModelconstructor תוך שמירה על אותו משך חיים כמוviewModelScope:class TestScopeViewModel( val customScope: CloseableCoroutineScope = CloseableCoroutineScope() ) : ViewModel(customScope) { // You can now use customScope in the same way as viewModelScope }
שינויים בהתנהגות
- ניסיון להעביר את
Lifecycle.Stateמ-INITIALIZEDאלDESTROYEDתמיד יחזירIllegalStateException, בלי קשר לשאלה אם ל-Lifecycleמצורף observer. - מעכשיו, כשמגיעים למצב
DESTROYED, המערכת תמחק את רשימת הצופים שלLifecycleRegistry.
גרסה 2.5.0-rc02
15 ביוני 2022
androidx.lifecycle:lifecycle-*:2.5.0-rc02 מופץ. גרסה 2.5.0-rc02 מכילה את השמירות האלה.
תיקוני באגים
-
ViewModelProviderלא יקרוס יותר כשמשלבים גרסאות קודמות של יחסי תלות של מחזור החיים compileOnly עם גרסאות 2.5 ומעלה. (I81a66, b/230454566)
גרסה 2.5.0-rc01
11 במאי 2022
androidx.lifecycle:lifecycle-*:2.5.0-rc01 מופץ. גרסה 2.5.0-rc01 מכילה את השמירות האלה.
תיקוני באגים
-
MediatorLiveData.addSource()throws aNullPointerExceptionwhen passed anullsource instead of propagating thenullsource to observers.(Ibd0fb, b/123085232)
גרסה 2.5.0-beta01
20 באפריל 2022
androidx.lifecycle:lifecycle-*:2.5.0-beta01 מופץ. גרסה 2.5.0-beta01 מכילה את השמירות האלה.
שינויים ב-API
- נוספו נציגי מאפיינים של
SavedStateHandle.saveableכדי להשתמש בשמות מאפיינים כמפתחות לשמירת מצב ב-SavedStateHandle(I8bb86, b/225014345)
תיקוני באגים
- תוקנה הבעיה שבה הטמעה של רכיב
NavHostבתוך רכיבNavHostאחר בכרטיסייה של ניווט בתחתית שלא מוגדרת כראשית מובילה ל-IllegalStateExceptionכשמשתמשים בכמה מחסניות חזרה. (I11bd5, b/228865698)
גרסה 2.5.0-alpha06
6 באפריל 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha06 מופץ. גרסה 2.5.0-alpha06 מכילה את השמירות האלה.
תכונות חדשות
- Add experimental
MutableStateoverload toSavedStateHandle.saveablefor parity withrememberSaveable(I38cfe, b/224565154)
שינויים ב-API
- המאפיין
CreationExtrasהוא עכשיו מופשט במקום סגור. (Ib8a7a)
תיקוני באגים
- תוקנה שגיאת
IllegalStateException: Already attached to lifecycleOwnerשנגרמה על ידיSavedStateHandleController. (I7ea47, b/215406268)
גרסה 2.5.0-alpha05
23 במרץ 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha05 מופץ. גרסה 2.5.0-alpha05 מכילה את השמירות האלה.
תכונות חדשות
- מודול
lifecycle-viewmodel-composeכולל עכשיו אתSavedStateHandleSaver, API ניסיוני שמוודא שהערכים ב-SavedStateHandleמשולבים בצורה נכונה עם אותו מצב שמור של המופע שבו נעשה שימוש ב-rememberSaveable. (Ia88b7, b/195689777)
שינויים ב-API
- תוקנה בעיית תאימות עם Lifecycle 2.3 וגרסאות חדשות יותר של Lifecycle ב-Java. (I52c8a, b/219545060)
תיקוני באגים
- מעכשיו אפשר להשתמש ב-
SavedStateViewFactoryב-CreationExtrasגם אם הוא אותחל באמצעותSavedStateRegistryOwner. אם מספקים תוספים, המערכת מתעלמת מהארגומנטים שמוגדרים בהפעלה. (I6c43b, b/224844583)
גרסה 2.5.0-alpha04
9 במרץ 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha04 מופץ. גרסה 2.5.0-alpha04 מכילה את השמירות האלה.
שינויים ב-API
-
SavedStateHandleמציע עכשיו APIgetStateFlow()שמחזיר KotlinStateFlowלמעקב אחרי שינויים בערכים כחלופה לשימוש ב-LiveData. (Iad3ab, b/178037961)
גרסה 2.5.0-alpha03
23 בפברואר 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha03 מופץ. גרסה 2.5.0-alpha03 מכילה את השמירות האלה.
תכונות חדשות
- נוספו
addCloseable()API ועומס יתר חדש של בנאי שמאפשרים להוסיף אובייקטCloseableאחד או יותר ל-ViewModelשייסגר כשמנקים אתViewModel, בלי שנדרשת עבודה ידנית ב-onCleared(). (I55ea0) -
lifecycle-viewmodelמספק עכשיוInitializerViewModelFactoryשמאפשר להוסיף lambda לטיפול במחלקותViewModelמסוימות, באמצעותCreationExtrasכמקור הנתונים הראשי. (If58fc, b/216687549) -
lifecycle-viewmodel-composeכולל עכשיו API שלviewModel()שמקבל מפעל למבדה כדי ליצור מופע שלViewModelבלי לדרוש יצירה שלViewModelProvider.Factoryבהתאמה אישית. (I97fbb, b/216688927)
שינויים ב-API
- עכשיו אפשר ליצור
ViewModelעםCreationExtrasדרךlifecycle-viewmodel-compose. (I08887, b/216688927)
שינויים בהתנהגות
- ניסיון להעביר את
Lifecycle.Stateמ-INITIALIZEDאלDESTROYEDתמיד יחזיר עכשיו את השגיאהIllegalStateException, בלי קשר לשאלה אם ל-Lifecycleמצורף אובייקט observer. (I7c390, b/177924329) -
LifecycleRegistryינקה עכשיו את רשימת הצופים שלו כשהוא יגיע למצבDESTROYED. (I4f8dd, b/142925860)
גרסה 2.5.0-alpha02
9 בפברואר 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha02 מופץ. גרסה 2.5.0-alpha02 מכילה את השמירות האלה.
שינויים ב-API
- הקבצים
SavedStateHandleו-SavedStateViewModelFactoryהומרו ל-Kotlin. כך שיפרנו את האפשרות להגדיר ערך null לסוגים הגנריים בשתי המחלקות. (Ib6ce2, b/216168263, I9647a, b/177667711) - הפרמטר
LiveDataשל הפונקציהswitchMapיכול עכשיו להחזיר פלט שניתן להקצאה ל-null. (I40396, b/132923666) - התוספים
LiveData-ktx מסומנים עכשיו ב-@CheckResultכדי לוודא שהתוצאה תהיה בשימוש כשקוראים לפונקציות האלה. (Ia0f05, b/207325134)
שינויים בהתנהגות
- הערך
SavedStateHandleמאוחסן עכשיו בצורה תקינה כ-defaultValue כשלא קיים ערך למפתח שצוין. (I1c6ce, b/178510877)
תיקוני באגים
- מתוך Lifecycle
2.4.1: עודכןlifecycle-processכך שיהיה תלוי ב-Startup 1.1.1 כדי להבטיח שתיקונים שמונעים מ-ProcessLifecycleInitializerלהציגStartupExceptionיהיו זמינים כברירת מחדל. (Ib01df, b/216490724) - עכשיו מוצגת הודעת שגיאה משופרת אם לשיעורים מותאמים אישית מסוג
AndroidViewModelיש פרמטרים בסדר שגוי, ומנסים ליצורViewModel. (I340f7, b/177667711) - מעכשיו אפשר ליצור מודל צפייה באמצעות
CreationExtrasבאמצעותAndroidViewModelFactoryבלי להגדיר אפליקציה. (I6ebef, b/217271656)
גרסה 2.5.0-alpha01
26 בינואר 2022
androidx.lifecycle:lifecycle-*:2.5.0-alpha01 מופץ. גרסה 2.5.0-alpha01 מכילה את השמירות האלה.
ViewModel CreationExtras
בגרסה הזו אנחנו מניחים את היסודות לשינוי המבנה של ViewModel. במקום קבוצה קשיחה של מחלקות משנה של ViewModelProvider.Factory שכל אחת מהן מוסיפה פונקציונליות נוספת (מאפשרת פרמטר של constructor של Application באמצעות AndroidViewModelFactory, מאפשרת פרמטר של constructor של SavedStateHandle באמצעות SavedStateViewModelFactory ו-AbstractSavedStateViewModelFactory וכו'), אנחנו עוברים לעולם של פקטורי (factory) בלי שמירת מצב שמסתמכים על קונספט חדש, CreationExtras. (Ia7343, b/188691010, b/188541057)
בעקבות השינוי הזה, ViewModelProvider לא מבצע יותר קריאות ישירות לשיטה הקודמת create(Class<T>) של ViewModelProvider.Factory. במקום זאת, היא קוראת לעומס יתר חדש של create: create(Class<T>, CreationExtras). המשמעות היא שכל הטמעה ישירה של מופע ViewModelProvider.Factory מקבלת עכשיו גישה לכל אחד מהמאפיינים החדשים האלה של CreationExtras:
-
ViewModelProvider.NewInstanceFactory.VIEW_MODEL_KEY:Stringמספק גישה למפתח המותאם אישית שהועבר אלViewModelProvider.get(). ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEYמספק גישה לכיתהApplication.-
SavedStateHandleSupport.SAVED_STATE_REGISTRY_OWNER_KEYמספק גישה ל-SavedStateRegistryOwnerשמשמש ליצירת ViewModel. -
SavedStateHandleSupport.VIEW_MODEL_STORE_OWNER_KEYמספק גישה ל-ViewModelStoreOwnerשמשמש ליצירת ViewModel. - הפונקציה
SavedStateHandleSupport.DEFAULT_ARGS_KEYמספקת גישה לBundleשל הארגומנטים שצריך להשתמש בהם כדי ליצורSavedStateHandle.
התוספים האלה מסופקים כברירת מחדל כשמשתמשים ב-Activity 1.5.0-alpha01, ב-Fragment 1.5.0-alpha01 וב-Navigation 2.5.0-alpha01. אם אתם משתמשים בגרסה קודמת של הספריות האלה, CreationExtras יהיה ריק – כל מחלקות המשנה הקיימות של ViewModelProvider.Factory נכתבו מחדש כדי לתמוך גם בנתיב היצירה מדור קודם שבו השתמשו בגרסאות קודמות של הספריות האלה, וגם בנתיב CreationExtras שבו ישתמשו מעכשיו והלאה.
הם CreationExtras מאפשרים ליצור ViewModelProvider.Factory שמעביר רק את המידע שאתם צריכים לכל ViewModel בלי להסתמך על היררכיה קפדנית של מחלקות משנה של Factory:
class CustomFactory : ViewModelProvider.Factory {
override fun <T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras): T {
return when (modelClass) {
HomeViewModel::class -> {
// Get the Application object from extras
val application = checkNotNull(extras[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY])
// Pass it directly to HomeViewModel
HomeViewModel(application)
}
DetailViewModel::class -> {
// Create a SavedStateHandle for this ViewModel from extras
val savedStateHandle = extras.createSavedStateHandle()
DetailViewModel(savedStateHandle)
}
else -> throw IllegalArgumentException("Unknown class $modelClass")
} as T
}
}
אנחנו משתמשים בפונקציית ההרחבה createSavedStateHandle() של Kotlin ב-CreationExtras מ-SavedStateHandleSupport כדי ליצור SavedStateHandle רק עבור ViewModel אחד שזקוק לו. (Ia6654, b/188541057)
אפשר לספק CreationExtras בהתאמה אישית על ידי החלפת getDefaultViewModelCreationExtras() ב-ComponentActivity או ב-Fragment, וכך להפוך אותם לזמינים ב-ViewModelProvider.Factory בהתאמה אישית כסוג מוטמע של הזרקה בעזרת AI. התוספים האלה יהיו זמינים באופן אוטומטי ל-Factory בהתאמה אישית כשהיא תהיה בשימוש ישירות עם ViewModelProvider או עם תוספי המאפיינים של Kotlin by viewModels() ו-by activityViewModels(). (I79f2b, b/207012584, b/207012585, b/207012490)
תיקוני באגים
- תוקנה בעיה שבה ערך ברירת המחדל שסופק ל-
SavedStateHandleהופיע מחדש אחרי שהתהליך הסתיים והתחיל מחדש, גם אם הוא הוסר ספציפית מ-SavedStateHandle. כתוצאה מכך, הפונקציהSavedStateHandleלא תמזג יותר ערכי ברירת מחדל וערכים משוחזרים, אלא תשתמש רק בערכים המשוחזרים כמקור האמת. (I53a4b)
גרסה 2.4
גרסה 2.4.1
9 בפברואר 2022
androidx.lifecycle:lifecycle-*:2.4.1 מופץ. גרסה 2.4.1 מכילה את השמירות האלה.
תיקוני באגים
- בוצעה העברה חוזרת מ-Lifecycle
2.5.0-alpha01: תוקנה בעיה שבה ערך ברירת המחדל שסופק ל-SavedStateHandleהופיע מחדש אחרי שהתהליך הסתיים והתחיל מחדש, גם אם הוא הוסר במיוחד מ-SavedStateHandle. כתוצאה מכך, הפונקציהSavedStateHandleלא תמזג יותר ערכי ברירת מחדל וערכים משוחזרים, אלא תשתמש רק בערכים המשוחזרים כמקור האמת. (I53a4b) -
lifecycle-processתלוי עכשיו ב-Androidx Startup 1.1.1, שבו תוקנה רגרסיה שבה שימוש ב-ProcessLifecycleInitializerגרם ל-StartupException. (b/216490724)
גרסה 2.4.0
27 באוקטובר 2021
androidx.lifecycle:lifecycle-*:2.4.0 מופץ. גרסה 2.4.0 מכילה את השמירות האלה.
שינויים חשובים מאז גרסה 2.3.0
- האפשרות
@OnLifecycleEventהוצאה משימוש. במקומה צריך להשתמש ב-LifecycleEventObserverאו ב-DefaultLifecycleObserver. - נוספה ספריית
androidx.lifecycle:lifecycle-viewmodel-compose. הוא מספקviewModel()composable ו-LocalViewModelStoreOwner.- שינוי שגורם לבעיות בקוד המקור: הקוד של
ViewModelProviderנכתב מחדש ב-Kotlin. השיטהViewModelProvider.Factory.createלא מאפשרת יותר ערך גנרי שניתן לאיפוס.
- שינוי שגורם לבעיות בקוד המקור: הקוד של
- נוסף API חדש של קורוטינות ל-
androidx.lifecycle:lifecycle-runtime-ktx: -
Lifecycle.repeatOnLifecycle, API שמריץ בלוק קוד ב-Coroutine כשה-Lifecycle נמצא לפחות במצב מסוים. הבלוק יבוטל ויופעל מחדש כשהסטטוס של מחזור החיים ישתנה ויחזור לסטטוס היעד. -
Flow.flowWithLifecycle, API שפולט ערכים מ-Flow במעלה הזרם כשהמחזור החיים נמצא לפחות במצב מסוים. - הפריט
DefaultLifecycleObserverהועבר מ-lifecycle.lifecycle-common-java8אלlifecycle.lifecycle-common. lifecycle.lifecycle-common-java8לא מספק יותר פונקציונליות נוספת מעבר ל-lifecycle.lifecycle-common, ולכן אפשר להחליף את התלות בו ב-lifecycle.lifecycle-common. - ממשק API שאינו קורוטינה מ-
lifecycle-viewmodel-ktxהועבר למודולlifecycle-viewmodel. הבית
lifecycle-processמשתמש עכשיו ב-androidx.startupכדי לאתחל אתProcessLifecycleOwner.בעבר, הפעולה הזו בוצעה על ידי
androidx.lifecycle.ProcessLifecycleOwnerInitializer.אם השתמשתם ב-
tools:node="remove"ב-ContentProviderכדי לאתחל את מחזור החיים של התהליך בעבר, אתם צריכים לבצע את הפעולות הבאות במקום זאת.<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.lifecycle.ProcessLifecycleInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>(או)
<!-- If you want to disable androidx.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
גרסה 2.4.0-rc01
29 בספטמבר 2021
androidx.lifecycle:lifecycle-*:2.4.0-rc01 יוצא ללא שינויים מגרסה Lifecycle 2.4.0-beta01. גרסה 2.4.0-rc01 מכילה את השמירות האלה.
גרסה 2.4.0-beta01
15 בספטמבר 2021
androidx.lifecycle:lifecycle-*:2.4.0-beta01 מופץ. גרסה 2.4.0-beta01 מכילה את השמירות האלה.
שינויים ב-API
- האפשרות
@OnLifecycleEventהוצאה משימוש. במקומה צריך להשתמש ב-LifecycleEventObserverאו ב-DefaultLifecycleObserver. (I5a8fa) - ה-DefaultLifecycleObserver הועבר מ-
androidx.lifecycle.lifecycle-common-java8אלandroidx.lifecycle.lifecycle-common. androidx.lifecycle.lifecycle-common-java8לא מספק יותר פונקציונליות נוספת מעבר ל-androidx.lifecycle.lifecycle-common, ולכן אפשר להחליף את התלות בו ב-androidx.lifecycle.lifecycle-common. (I021aa) - API שאינו קורוטינה מ-
lifecycle-viewmodel-ktxהועבר למודולlifecycle-viewmodel. (I6d5b2)
External Contribution
גרסה 2.4.0-alpha03
4 באוגוסט 2021
androidx.lifecycle:lifecycle-*:2.4.0-alpha03 מופץ. גרסה 2.4.0-alpha03 מכילה את השמירות האלה.
שינויים ב-API
- שינוי שגורם לבעיות בקוד המקור: המחלקה ViewModelProvider נכתבה מחדש ב-Kotlin.
השיטה
ViewModelProvider.Factory.createלא מאפשרת יותר ערך גנרי שניתן לאיפוס. (I9b9f6)
שינויים בהתנהגות
- הפונקציה
Lifecycle.repeatOnLifecycle:blockמופעלת עכשיו תמיד באופן סדרתי כשחוזרים על ההרצה. (Ibab33)
External Contribution
- תודה ל-chao2zhang על תיקון קטעי הקוד במסמכי התיעוד של
repeatOnLifecycle. #205.
גרסה 2.4.0-alpha02
16 ביוני 2021
androidx.lifecycle:lifecycle-*:2.4.0-alpha02 מופץ. גרסה 2.4.0-alpha02 מכילה את השמירות האלה.
תכונות חדשות
- נוסף
RepeatOnLifecycleWrongUsagelint check חדש ל-lifecycle-runtime-ktxשמזהה מקרים שבהם נעשה שימוש שגוי ב-repeateOnLifecycleב-onStart()או ב-onResume(). (706078, b/187887400)
שינויים ב-API
- ה-API
LifecycleOwner.addRepeatingJobהוסר לטובתLifecycle.repeatOnLifecycle, שמכבד את המקבילות המובנית וקל יותר להבנה. (I4a3a8) - להגדיר את
ProcessLifecycleInitializerכציבורי כדי ש-androidx.startup.Initializers אחרים יוכלו להשתמש בו כתלות. (I94c31)
תיקוני באגים
- תוקנה בעיה בבדיקת lint
NullSafeMutableLiveDataכשהשדה כולל משנים. (מס' 147, b/183696616) - תוקנה בעיה נוספת בבדיקת ה-lint
NullSafeMutableLiveDataכשמשתמשים ב-generics. (מס' 161, b/184830263)
External Contribution
- תודה ל-maxsav על שיפור הבדיקה של
NullSafeMutableLiveDatalint. (מס' 147, b/183696616) - תודה ל-kozaxinan על שיפור הבדיקה של
NullSafeMutableLiveDatalint. (מס' 161, b/184830263)
גרסה 2.4.0-alpha01
24 במרץ 2021
androidx.lifecycle:lifecycle-*:2.4.0-alpha01 מופץ. גרסה 2.4.0-alpha01 מכילה את השמירות האלה.
שינויים בהתנהגות
הבית
lifecycle-processמשתמש עכשיו ב-androidx.startupכדי לאתחל אתProcessLifecycleOwner.בעבר, הפעולה הזו בוצעה על ידי
androidx.lifecycle.ProcessLifecycleOwnerInitializer.אם השתמשתם ב-
tools:node="remove"ב-ContentProviderכדי לאתחל את מחזור החיים של התהליך בעבר, אתם צריכים לבצע את הפעולות הבאות במקום זאת.<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.lifecycle.ProcessLifecycleInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>(או)
<!-- If you want to disable androidx.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
שינויים ב-API
- נוסף
Flow.flowWithLifecycleAPI שפולט ערכים מה-Flow במעלה הזרם כשהמחזור נמצא לפחות במצב מסוים באמצעותLifecycle.repeatOnLifecycleAPI. זוהי חלופה ל-LifecycleOwner.addRepeatinJobAPI, שהוא גם חדש. (I0f4cd)
תיקוני באגים
- מגרסה 2.3.1 של Lifecycle: כלל ה-lint
NonNullableMutableLiveDataיכול להבחין עכשיו בין משתני שדה עם מאפיין המציין אם ערך יכול להיות ריק (nullability) שונה. (b/169249668)
גרסה 1.0.0 של Lifecycle Viewmodel Compose
גרסה 1.0.0-alpha07
16 ביוני 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha07 מופץ. גרסה 1.0.0-alpha07 מכילה את השמירות האלה.
שינויים ב-API שעלולים לגרום לבעיות
- עכשיו אפשר להשתמש ב-
viewModel()עםViewModelStoreOwnerאופציונלי, וכך קל יותר לעבוד עם בעלים אחרים מלבדLocalViewModelStoreOwner. לדוגמה, עכשיו אפשר להשתמש ב-viewModel(navBackStackEntry)כדי לאחזר ViewModel שמשויך לתרשים ניווט מסוים. (I2628d, b/188693123)
גרסה 1.0.0-alpha06
2 ביוני 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha06 מופץ. גרסה 1.0.0-alpha06 מכילה את השמירות האלה.
העדכון בוצע כדי שתהיה תאימות לגרסה 1.0.0-beta08 של Compose.
גרסה 1.0.0-alpha05
18 במאי 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha05 מופץ. גרסה 1.0.0-alpha05 מכילה את השמירות האלה.
תכונות חדשות
- העדכון בוצע כדי שתהיה תאימות לגרסה
1.0.0-beta07של Compose.
תיקוני באגים
- קבצי AndroidManifest מ-ui-test-manifest ומ-ui-tooling-data תואמים עכשיו ל-Android 12 (I6f9de, b/184718994)
גרסה 1.0.0-alpha04
7 באפריל 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha04 מופץ. גרסה 1.0.0-alpha04 מכילה את השמירות האלה.
שינויים בתלות
- הגרסה הזו מאפשרת ל-
androidx.hilt:hilt-navigation-composeול-androidx.navigation:navigation-composeלסנכרן תלויות ב-androidx.compose.compiler:compiler:1.0.0-beta04וב-androidx.compose.runtime:runtime:1.0.0-beta04. בגרסה 1.0.0, נדרש שהקומפיילר וזמן הריצה יהיו זהים.
גרסה 1.0.0-alpha03
10 במרץ 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha03 מופץ. גרסה 1.0.0-alpha03 מכילה את השמירות האלה.
שינויים ב-API
-
LocalViewModelStoreOwner.currentמחזירה עכשיוViewModelStoreOwnerשניתן לאכלוס בערך null, כדי לקבוע בצורה טובה יותר אםViewModelStoreOwnerזמין בהרכב הנוכחי. ממשקי API שנדרש בשבילםViewModelStoreOwner, כמוviewModel()ו-NavHost, עדיין יחזירו חריגה אם לא יוגדרViewModelStoreOwner. (Idf39a)
גרסה 1.0.0-alpha02 של Lifecycle-Viewmodel-Compose
24 בפברואר 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha02 מופץ. גרסה 1.0.0-alpha02 מכילה את השמירות האלה.
שינויים ב-API
-
LocalViewModelStoreOwnerכולל עכשיוprovidesפונקציות שאפשר להשתמש בהן עםCompositionLocalProvider, במקום ה-API שלasProvidableCompositionLocal(). (I45d24)
גרסה 1.0.0-alpha01 של Lifecycle-Viewmodel-Compose
10 בפברואר 2021
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 מופץ. גרסה 1.0.0-alpha01 מכילה את השמירות האלה.
תכונות חדשות
- הקומפוזיציה
viewModel()והקומפוזיציהLocalViewModelStoreOwnerהועברו מ-androidx.compose.ui.viewinteropלארטיפקט הזה בחבילהandroidx.lifecycle.viewmodel.compose. (I7a374)
גרסה 2.3.1
גרסה 2.3.1 של Lifecycle
24 במרץ 2021
androidx.lifecycle:lifecycle-*:2.3.1 מופץ. גרסה 2.3.1 מכילה את השמירות האלה.
תיקוני באגים
- עכשיו אפשר להשתמש בכלל
NonNullableMutableLiveDataשל כלי לאיתור שגיאות בקוד (lint) כדי להבדיל בין משתני שדה עם מאפיין המציין אם ערך יכול להיות ריק (nullability) שונה. (b/169249668)
גרסה 2.3.0
גרסה 2.3.0
10 בפברואר 2021
androidx.lifecycle:lifecycle-*:2.3.0 מופץ. גרסה 2.3.0 מכילה את השמירות האלה.
שינויים משמעותיים מאז גרסה 2.2.0
-
SavedStateHandleתמיכה במחלקות שלא ניתן להעביר כחבילה:SavedStateHandleתומך עכשיו בסריאליזציה עצלה (lazy serialization) בכך שהוא מאפשר לכם לקרוא ל-setSavedStateProvider()עבור מפתח נתון, ומספקSavedStateProviderשיקבל קריאה חוזרת ל-saveState()כשמבקשים מ-SavedStateHandleלשמור את המצב שלו. מידע נוסף מופיע במאמר בנושא שמירת מחלקות שלא ניתן להעביר. - אכיפה של התנהגות במחזור החיים:
- החל מגרסה LifecycleRegistry
DESTROYEDהיא מצב סופי. -
LifecycleRegistryמוודא עכשיו שהשיטות שלו נקראות בשרשור הראשי. הדרישה הזו תמיד הייתה קיימת לגבי מחזורי חיים של פעילויות, מקטעים וכו'. הוספה של observers משרשורים שאינם השרשור הראשי גרמה לקריסות בזמן הריצה שהיה קשה לאתר. עבור אובייקטים מסוגLifecycleRegistryשבבעלות הרכיבים שלכם, אתם יכולים לבטל את ההצטרפות לבדיקות באופן מפורש באמצעותLifecycleRegistry.createUnsafe(...), אבל אז אתם צריכים לוודא שמתבצע סנכרון תקין כשניגשים אלLifecycleRegistryהזה משרשורים שונים.
- החל מגרסה LifecycleRegistry
- Lifecycle State and Event Helpers: נוספו שיטות עזר סטטיות של
downFrom(State),downTo(State),upFrom(State),upTo(State)אלLifecycle.Eventכדי ליצור אתEventבהינתןStateוכיוון המעבר. נוספה השיטהgetTargetState()שמספקת אתStateשאליו מחזור החיים יעבור ישירות אחריEvent. -
withStateAtLeast: נוספו ממשקי API שלLifecycle.withStateAtLeastשממתינים למצב של מחזור חיים ומריצים בלוק קוד לא מושהה באופן סינכרוני בנקודת שינוי המצב, ואז ממשיכים עם התוצאה. ממשקי ה-API האלה שונים מהשיטות הקיימות שלwhen*כי הם לא מאפשרים להריץ קוד השהיה ולא משתמשים ב-dispatcher מותאם אישית. (aosp/1326081) -
ViewTreeAPIs: ממשקי API חדשים שלViewTreeLifecycleOwner.get(View)ו-ViewTreeViewModelStoreOwner.get(View)מאפשרים לאחזר אתLifecycleOwnerו-ViewModelStoreOwnerבהתאמה, בהינתן מופע שלView. כדי שהנתונים יאוכלסו בצורה נכונה, צריך לשדרג ל-Activity1.2.0ול-Fragment1.3.0, ול-AppCompat 1.3.0-alpha01 או לגרסה מתקדמת יותר. תוספי KotlinfindViewTreeLifecycleOwnerו-findViewTreeViewModelStoreOwnerזמינים ב-lifecycle-runtime-ktxוב-lifecycle-viewmodel-ktx, בהתאמה. LiveData.observe()הוצאה משימוש של תוסף Kotlin: תוסף Kotlin שנדרש לשימוש בתחביר lambda הוצא משימוש, כי הוא לא נדרש כשמשתמשים ב-Kotlin 1.4.LiveData.observe()
גרסה 2.3.0-rc01
16 בדצמבר 2020
androidx.lifecycle:lifecycle-*:2.3.0-rc01 מופץ. גרסה 2.3.0-rc01 מכילה את השמירות האלה.
תיקוני באגים
- השיטה
keys()שלSavedStateHandleעכשיו עקבית לפני ואחרי שמירת המצב – היא כוללת עכשיו מפתחות ששימשו בעבר עםsetSavedStateProvider()בנוסף למפתחות ששימשו עםset()ועםgetLiveData(). (aosp/1517919, b/174713653)
External Contribution
- ממשקי ה-API להשהיית קורוטינות עם מודעות למחזור החיים מטפלים עכשיו טוב יותר בקריאות ל-
yield(). תודה לניקלאס אנסמן גירץ! (aosp/1430830, b/168777346)
גרסה 2.3.0-beta01
1 באוקטובר 2020
androidx.lifecycle:lifecycle-*:2.3.0-beta01 מופץ. גרסה 2.3.0-beta01 מכילה את השמירות האלה.
שינויים ב-API
- פונקציית ההרחבה
LiveData.observe()של Kotlin שנדרשת לשימוש בתחביר lambda הוצאה משימוש, כי היא לא נדרשת כשמשתמשים ב-Kotlin 1.4. (I40d3f)
תיקוני באגים
- שדרוג androidx לשימוש ב-Kotlin 1.4 (Id6471, b/165307851, b/165300826)
שינויים במסמכי התיעוד
- עדכנו את הכלי
liveDataואת המסמכים שלasLiveData()כדי לכלול פרטים על שינוי ערכי הזמן הקצוב לתפוגה שצוינו. (aosp/1122324)
גרסה 2.3.0-alpha07
19 באוגוסט 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha07 מופץ. גרסה 2.3.0-alpha07 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיית קריסה ב
NullSafeMutableLiveDataבדיקת Lint. (aosp/1395367)
גרסה 2.3.0-alpha06
22 ביולי 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha06 מופץ. גרסה 2.3.0-alpha06 מכילה את השמירות האלה.
תכונות חדשות
- הוספנו ל-
Lifecycle.Eventשיטות עזר סטטיות שלdownFrom(State),downTo(State),upFrom(State),upTo(State)כדי ליצור אתEventבהינתןStateוכיוון מעבר. נוספה השיטהgetTargetState()שמספקת אתStateשאליו מחזור החיים יעבור ישירות אחריEvent. (I00887) - נוספו ממשקי API
Lifecycle.withStateAtLeastשממתינים למצב מחזור חיים ומריצים באופן סינכרוני בלוק קוד שלא מושהה בנקודת שינוי המצב, ואז ממשיכים עם התוצאה. ממשקי ה-API האלה שונים מהשיטות הקיימות שלwhen*כי הם לא מאפשרים להריץ קוד השהיה ולא משתמשים ב-dispatcher מותאם אישית. (aosp/1326081)
שינויים בהתנהגות
- החל מגרסה LifecycleRegistry
DESTROYEDהיא מצב סופי. (I00887) -
LifecycleRegistryמוודא עכשיו שהשיטות שלו נקראות בשרשור הראשי. הדרישה הזו תמיד הייתה קיימת לגבי מחזורי חיים של פעילויות, מקטעים וכו'. הוספה של observers משרשורים שאינם השרשור הראשי גרמה לקריסות בזמן הריצה שהיה קשה לאתר. באובייקטיםLifecycleRegistryשנמצאים בבעלות הרכיבים שלכם, אתם יכולים להשתמש ב-LifecycleRegistry.createUnsafe(...)כדי לבטל את ההצטרפות לבדיקות באופן מפורש. עם זאת, במקרה כזה אתם צריכים לוודא שמתבצעת סנכרון תקין כשניגשים אלLifecycleRegistryמשרשורים שונים (Ie7280, b/137392809)
תיקוני באגים
- תוקנה קריסה ב-
NullSafeMutableLiveData. (b/159987480) - תוקן
ObsoleteLintCustomCheckבבדיקות Lint שצורפו ל-lifecycle-livedata-core-ktx(ובמיוחד ל-NullSafeMutableLiveData). (b/158699265)
גרסה 2.3.0-alpha05
24 ביוני 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha05 מופץ. גרסה 2.3.0-alpha05 מכילה את השמירות האלה.
תיקוני באגים
-
LiveDataעכשיו יש טיפול טוב יותר במקרים של כניסה חוזרת, כדי למנוע קריאות כפולות ל-onActive()או ל-onInactive(). (b/157840298) - תוקנה בעיה שבה בדיקות Lint לא פעלו כשנעשה שימוש ב-Android Studio 4.1 Canary 6 ומעלה. (aosp/1331903)
גרסה 2.3.0-alpha04
10 ביוני 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha04 מופץ. גרסה 2.3.0-alpha04 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה קריסה בבדיקת
NonNullableMutableLiveDataLint. (b/157294666) NonNullableMutableLiveDataבדיקת ה-Lint כוללת עכשיו הרבה יותר מקרים שבהם ערךnullהוגדר ב-MutableLiveDataעם פרמטר מסוג שאינו null. (b/156002218)
גרסה 2.3.0-alpha03
20 במאי 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha03 מופצים. גרסה 2.3.0-alpha03 מכילה את השמירות האלה.
תכונות חדשות
-
SavedStateHandleתומך עכשיו בסריאליזציה עצלה. אפשר לקרוא ל-setSavedStateProvider()עבור מפתח נתון, לספקSavedStateProviderשיקבל קריאה חוזרת ל-saveState()כשמבקשים מ-SavedStateHandleלשמור את המצב שלו. (b/155106862) - ממשק
ViewTreeViewModelStoreOwner.get(View)API חדש מאפשר לכם לאחזר אתViewModelStoreOwnerשמכיל את המופעView. כדי שהנתונים יאוכלסו בצורה נכונה, צריך לשדרג ל-Activity1.2.0-alpha05, Fragment1.3.0-alpha05ו-AppCompat1.3.0-alpha01. נוספה הרחבת KotlinfindViewModelStoreOwner()ל-lifecycle-viewmodel-ktx. (aosp/1295522)
תיקוני באגים
- תוקנה בעיה שגרמה לכך ש
MutableLiveDataבדיקות Lint שפורסמו ב-Lifecycle2.3.0-alpha01לא פורסמו לצד ארטיפקטlifecycle-livedata-core-ktx. (b/155323109)
גרסה 2.3.0-alpha02
29 באפריל 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha02 מופץ. גרסה 2.3.0-alpha02 מכילה את השמירות האלה.
שינויים ב-API
-
SavedStateViewModelFactoryמאפשרת עכשיו להעביר ערך null Applicationלקונסטרוקטור שלה כדי לתמוך טוב יותר במקרים שבהם ערך כזה לא זמין בקלות, ואין צורך בתמיכה ב-AndroidViewModel. (aosp/1285740)
תיקוני באגים
- שיפור הביצועים של הפעלה במצב התחלתי (cold start) על ידי מניעת כשל באימות המחלקה במכשירים עם API 28 ומטה. (aosp/1282118)
גרסה 2.3.0-alpha01
4 במרץ 2020
androidx.lifecycle:lifecycle-*:2.3.0-alpha01 מופץ. גרסה 2.3.0-alpha01 מכילה את השמירות האלה.
תכונות חדשות
- ממשק
ViewTreeLifecycleOwner.get(View)API חדש מאפשר לכם לאחזר אתLifecycleOwnerשמכיל את המופעView. כדי שהנתונים יאוכלסו בצורה נכונה, צריך לשדרג ל-Activity1.2.0-alpha01ול-Fragment1.3.0-alpha01. תוסףfindViewTreeLifecycleOwnerKotlin זמין ב-lifecycle-runtime-ktx. (aosp/1182361, aosp/1182956) - נוסף בדיקת Lint חדשה שמציגה אזהרה כשמגדירים ערך
nullב-MutableLiveDataשהוגדר ב-Kotlin כערך שאינו null. האפשרות הזו זמינה כשמשתמשים בארטיפקטיםlivedata-core-ktxאוlivedata-ktx. (aosp/1154723, aosp/1159092) - יש ארטיפקט חדש של
lifecycle-runtime-testingשמספקTestLifecycleOwnerשמטמיע אתLifecycleOwnerומספקLifecycleשניתן לשינוי ובטוח לשימוש בשרשור. (aosp/1242438)
תיקוני באגים
- לארטיפקט
lifecycle-runtimeיש עכשיו שם חבילה ייחודי. (aosp/1187196)
גרסה 2.2.0
ViewModel-Savedstate גרסה 2.2.0
5 בפברואר 2020
androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0 מופץ. גרסה 2.2.0 מכילה את השמירות האלה.
ViewModel SavedState של מחזור החיים חולק עכשיו את אותה גרסה כמו ארטיפקטים אחרים של מחזור החיים. ההתנהגות של 2.2.0 זהה להתנהגות של 1.0.0.
גרסה 2.2.0
22 בינואר 2020
androidx.lifecycle:lifecycle-*:2.2.0 מופץ. גרסה 2.2.0 מכילה את השמירות האלה.
שינויים חשובים מאז גרסה 2.1.0
- שילוב של שגרות המשך של מחזור החיים: ארטיפקט
lifecycle-runtime-ktxהחדש מוסיף שילוב בין מחזור החיים לבין שגרות המשך של Kotlin. בנוסף, הרחבנו אתlifecycle-livedata-ktxכדי לנצל את היתרונות של קורוטינות. פרטים נוספים מופיעים במאמר בנושא שימוש ב-Kotlin coroutines עם רכיבי ארכיטקטורה. - הוצאה משימוש של
ViewModelProviders.of():ViewModelProviders.of()הוצא משימוש. אפשר להעבירFragmentאוFragmentActivityלקונסטרוקטור החדשViewModelProvider(ViewModelStoreOwner)כדי להשיג את אותה הפונקציונליות כשמשתמשים ב-Fragment1.2.0. lifecycle-extensionsהוצאה משימוש של ארטיפקט: בעקבות ההוצאה משימוש שלViewModelProviders.of()שצוינה למעלה, בגרסה הזו אנחנו מוציאים משימוש את ה-API האחרון ב-lifecycle-extensions, ולכן הארטיפקט הזה יוצא משימוש באופן מלא. מומלץ מאוד להשתמש ב-lifecycle-serviceבהתאם לארטיפקטים הספציפיים של מחזור החיים שאתם צריכים (למשלLifecycleServiceאם אתם משתמשים ב-LifecycleServiceו-lifecycle-processאם אתם משתמשים ב-ProcessLifecycleOwner) ולא ב-lifecycle-extensions, כי לא תהיה גרסה עתידית של2.3.0ל-lifecycle-extensions.- Gradle Incremental Annotation Processor: מעבד האנוטציות של Lifecycle הוא מצטבר כברירת מחדל.
אם האפליקציה כתובה בשפת התכנות Java 8, אפשר להשתמש ב-
DefautLifecycleObserverבמקום זאת. אם היא כתובה בשפת התכנות Java 7, אפשר להשתמש ב-LifecycleEventObserver.
גרסה 2.2.0-rc03
4 בדצמבר 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc03 מופץ. גרסה 2.2.0-rc03 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה שגרמה לכשל כש-
ViewModelמדומה אוחסן ב-ViewModelStoreונשלחה לגביו שאילתה מאוחר יותר עם הגדרות ברירת מחדל של היצרן. - תיקון של שימוש ב-
Dispatchers.Main.immediateב-launchWhenCreatedובשיטות דומות כדי שהקריאה תתבצע באופן סינכרוני במהלך אירוע מחזור החיים המתאים. (aosp/1156203)
תכנים שנוספו על ידי משתמשים חיצוניים
- תודה לאנדרס יארלברג על התרומה לתיקון! (aosp/1156203)
- תודה ל-Vsevolod Tolstopyatov מ-Jetbrains על בדיקת ההטמעה של ביצוע מוטמע.
שינויים בתלות
- Lifecycle Extensions תלוי עכשיו ב-Fragment
1.2.0-rc03.
גרסה 2.2.0-rc02
7 בנובמבר 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc02 מופץ. גרסה 2.2.0-rc02 מכילה את השמירות האלה.
תיקוני באגים
- תוקן באג בהגדרת ProGuard של הספרייה שהשפיע על מכשירים עם API מגרסה 28 ומעלה, אם ה-API של היעד הוא מתחת ל-29. (b/142778206)
גרסה 2.2.0-rc01
23 באוקטובר 2019
androidx.lifecycle:lifecycle-*:2.2.0-rc01 מופץ. גרסה 2.2.0-rc01 מכילה את השמירות האלה.
תיקוני באגים
- נפתרה בעיה שבה
launchWhenCreatedושיטות קשורות הופעלו פריים אחד אחרי שיטת מחזור החיים המשויכת, בגלל השימוש ב-Dispatchers.Mainבמקום ב-Dispatchers.Main.immediate. (aosp/1145596)
תכנים שנוספו על ידי משתמשים חיצוניים
- תודה לניקלאס אנסמן על התרומה לתיקון! (aosp/1145596)
גרסה 2.2.0-beta01
9 באוקטובר 2019
androidx.lifecycle:lifecycle-*:2.2.0-beta01 מופץ. גרסה 2.2.0-beta01 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה רגרסיה שהוצגה ב-Lifecycle 2.2.0-alpha05 בסדר של
ProcessLifecycleOwnerוהפעילותLifecycleOwnerשעוברת למצב started ו-resumed במכשירי Android 10. (aosp/1128132) - תוקנה רגרסיה שהוצגה ב-Lifecycle
2.2.0-alpha05וגרמה ל-NullPointerExceptionכשמשתמשים בגרסה2.0.0או2.1.0שלlifecycle-process. (b/141536990)
גרסה 2.2.0-alpha05
18 בספטמבר 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha05 מופץ. גרסה 2.2.0-alpha05 מכילה את השמירות האלה.
תיקוני באגים
- תוקן מרוץ תהליכים בכלי ליצירת LiveData של קורוטינה. b/140249349
גרסה 2.2.0-alpha04
5 בספטמבר 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha04 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.
תכונות חדשות
-
lifecycleScope,whenCreated,whenStarted,whenResumed,viewModelScopeוההטמעה הבסיסית שלliveDataמשתמשים עכשיו ב-Dispatchers.Main.immediateבמקום ב-Dispatchers.Main. (b/139740492)
תכנים שנוספו על ידי משתמשים חיצוניים
- תודה לניקלאס אנסמן על העזרה במעבר ל-
Dispatchers.Main.immediate! (aosp/1106073)
גרסה 2.2.0-alpha03
7 באוגוסט 2019
androidx.lifecycle:lifecycle-*:2.2.0-alpha03 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.
תכונות חדשות
- הטמעות של
ViewModelStoreOwnerיכולות עכשיו להטמיע אתHasDefaultViewModelProviderFactoryכדי לספקViewModelProvider.Factoryכברירת מחדל. הפעולה הזו בוצעה עבור Activity1.1.0-alpha02, Fragment1.2.0-alpha02ו-Navigation2.2.0-alpha01. (aosp/1092370, b/135716331)
שינויים ב-API
- המאפיין
ViewModelProviders.of()הוצא משימוש. כדי להשיג את אותה פונקציונליות, אפשר להעביר את הערךFragmentאוFragmentActivityלקונסטרוקטור החדשViewModelProvider(ViewModelStoreOwner). (aosp/1009889)
גרסה 2.2.0-alpha02
2 ביולי 2019
androidx.lifecycle:*:2.2.0-alpha02 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.
שינויים ב-API
- החלפנו את
LiveDataScope.initialValueב-LiveDataScope.latestValue, שיעקוב אחרי הערך הנוכחי שמופק מהבלוקliveData. - נוספה עומס יתר חדש לבונה
liveDataשמקבל פרמטרtimeoutכסוגDuration
גרסה 2.2.0-alpha01
7 במאי 2019
androidx.lifecycle:*:2.2.0-alpha01 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.
תכונות חדשות
- בגרסה הזו הוספנו תכונות חדשות שמאפשרות תמיכה בשגרות המשך (coroutines) של Kotlin עבור Lifecycle ו-LiveData. כאן אפשר למצוא מסמכים מפורטים בנושא.
גרסה 1.0.0 של ViewModel-SavedState
גרסה 1.0.0
22 בינואר 2020
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0 מופץ. גרסה 1.0.0 מכילה את השמירות האלה.
תכונות חשובות בגרסה 1.0.0
- נוספה מחלקה חדשה של SavedStateHandle. היא מאפשרת לכיתות
ViewModelשלכם לגשת למצב השמור ולתרום לו. אפשר לקבל את האובייקט הזה בבונה של המחלקהViewModel, והמפעלים שסופקו כברירת מחדל על ידי Fragments ו-AppCompatActivity יזריקו אתSavedStateHandleבאופן אוטומטי. - נוסף AbstractSavedStateViewModelFactory. הוא מאפשר לכם ליצור מפעלים בהתאמה אישית בשביל
ViewModelולספק להם גישה ל-SavedStateHandle.
ViewModel-Savedstate גרסה 1.0.0-rc03
4 בדצמבר 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc03 מופץ. גרסה 1.0.0-rc03 מכילה את השמירות האלה.
שינויים בתלות
- Lifecycle ViewModel SavedState תלוי עכשיו ב-Lifecycle
2.2.0-rc03.
Viewmodel-Savedstate גרסה 1.0.0-rc02
7 בנובמבר 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc02 מופץ. גרסה 1.0.0-rc02 מכילה את השמירות האלה.
שינויים בתלות
- עכשיו תלוי במחזור החיים
2.2.0-rc02.
ViewModel-SavedState גרסה 1.0.0-rc01
23 באוקטובר 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc01 יוצא ללא שינויים מ-1.0.0-beta01. גרסה 1.0.0-rc01 מכילה את השמירות האלה.
ViewModel-Savedstate גרסה 1.0.0-beta01
9 באוקטובר 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-beta01 מופץ. גרסה 1.0.0-beta01 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה בעיה שבה גישה ל-ViewModel של SavedState בפעם הראשונה ב-
Activity.onActivityResult()גרמה ל-IllegalStateException. (b/139093676) - תוקנה בעיה ב-
IllegalStateExceptionכשמשתמשים ב-AbstractSavedStateViewModelFactory. (b/141225984)
ViewModel-SavedState גרסה 1.0.0-alpha05
18 בספטמבר 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha05 מופץ. גרסה 1.0.0-alpha05 מכילה את השמירות האלה.
שינויים ב-API
-
SavedStateViewModelFactoryכבר לא מרחיב אתAbstractSavedStateViewModelFactoryו-SavedStateHandleנוצר רק עבור ViewModels שביקשו אותו (aosp/1113593)
ViewModel-SavedState גרסה 1.0.0-alpha03
7 באוגוסט 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha03 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.
שינויי תוכנה שעלולים לגרום לכשלים
-
lifecycle-viewmodel-savedstateכבר לא תלוי ב-fragment, והבנאים שקשורים ל-SavedStateViewModelFactory(Fragment)ול-SavedStateViewModelFactory(FragmentActivity)הוסרו. במקום זאת,SavedStateViewModelFactoryהיא עכשיו ברירת המחדל של המפעלים Activity1.1.0-alpha02, Fragment1.2.0-alpha02ו-Navigation2.2.0-alpha01. (b/135716331)
ViewModel-SavedState גרסה 1.0.0-alpha02
2 ביולי 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha02 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.
תכונות חדשות
- נוספה
SavedStateHandle.getLiveData()עומס יתר שמקבל ערך ברירת מחדל.
שינויים ב-API
- השם של
SavedStateVMFactoryהשתנה לSavedStateViewModelFactory. - השם של
AbstractSavedStateVMFactoryהשתנה לAbstractSavedStateViewModelFactory.
ViewModel-Savedstate גרסה 1.0.0-alpha01
13 במרץ 2019
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha01 מופץ. כאן אפשר לראות את יומן השליחות המלא של הגרסה הראשונית הזו.
תכונות חדשות
- עכשיו
ViewModelsיכול לתרום ל-savedstate. כדי לעשות את זה, משתמשים במפעלSavedStateVMFactoryשל viewmodel שהוצג לאחרונה, ול-ViewModel צריך להיות בנאי שמקבל אובייקטSavedStateHandleכפרמטר.
גרסה 2.1.0
שינויים חשובים מאז גרסה 2.0.0
- נוסף
LifecycleEventObserverלמקרים שבהם נדרש זרם של אירועים במחזור החיים. זהו API ציבורי ולא מחלקה מוסתרתGenericLifecycleObserver. - נוספו תוספי ktx ל-methods
LiveData.observeול-methodsTransformations.*. - נוסף
Transformations.distinctUntilChanged, שיוצר אובייקט LiveData חדש שלא פולט ערך עד שהערך של המקורLiveDataמשתנה. - הוספנו תמיכה ב-coroutines ב-ViewModels על ידי הוספת מאפיין ההרחבה
ViewModel.viewModelScope.
גרסה 2.1.0
5 בספטמבר 2019
androidx.lifecycle:lifecycle-*:2.1.0 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.
גרסה 2.1.0-rc01
2 ביולי 2019
androidx.lifecycle:*:2.1.0-rc01 יוצא ללא שינויים מ-androidx.lifecycle:*:2.1.0-beta01. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.
גרסה 2.1.0-beta01
7 במאי 2019
androidx.lifecycle:*:2.1.0-beta01 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.
תכונות חדשות
- מחזור החיים של ממשקי ה-API עבר לשלב בטא: ממשקי API שהוצגו בגרסאות אלפא קודמות, כמו
liveDataפונקציות הרחבה לטרנספורמציות ולתצפיות,ViewModelאתחול עם העברת מאפיינים ואחרים, עברו לייצוב ולא ישתנו.
גרסה 2.1.0-alpha04
3 באפריל 2019
androidx.lifecycle:*:2.1.0-alpha04 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.
שינויים ב-API
- שינוי שעלול לגרום לבעיות: ה-API הבסיסי שמאחורי
by viewModels()ו-by activityViewModels()השתנה כדי לתמוך ישירות ב-ViewModelStore, ולא רק ב-ViewModelStoreOwner. (aosp/932932)
גרסה 2.1.0-alpha03
13 במרץ 2019
androidx.lifecycle:*:2.1.0-alpha03 מופץ. כאן אפשר לראות את הרשימה המלאה של הקומיטים שכלולים בגרסה הזו.
שינויים ב-API
- השדה
ViewModelProvider.KeyedFactoryהוסר. הממשק השני, בנוסף ל-ViewModelProvider.Factory, לא השתלב היטב עם התכונות החדשות כמו העברת הרשאות בנכס ב-Kotlinby viewmodels {}. (aosp/914133)
גרסה 2.1.0-alpha02
30 בינואר 2019
androidx.lifecycle 2.1.0-alpha02 מופץ.
שינויים ב-API
-
LifecycleRegistryכולל עכשיו את ה-methodsetCurrentState()שמחליף את ה-methodsetState()שהוצא משימוש. (aosp/880715)
תיקוני באגים
- תוקנה בעיה שבה מופעים של
ViewModelמדומה קרסו כשניקו אתViewModelStoreשמכיל אותם. b/122273087
גרסה 2.1.0-alpha01
17 בדצמבר 2018
androidx.lifecycle 2.1.0-alpha01 מופץ.
תכונות חדשות
- נוסף
LifecycleEventObserverלמקרים שבהם נדרש זרם של אירועים במחזור החיים. זהו API ציבורי ולא מחלקה מוסתרתGenericLifecycleObserver. - נוספו תוספי ktx ל-methods
LiveData.observeול-methodsTransformations.*. - השיטה
Transformations.distinctUntilChangedנוספה. היא יוצרת אובייקטLiveDataחדש שלא פולט ערך עד שערך המקור של LiveData משתנה. - תמיכה ב-Coroutine ב-ViewModels: נוספה מאפיין ההרחבה
ViewModel.viewModelScope. - נוספה
ViewModelProvider.KeyedFactory, פונקציית factory ל-ViewModels שמקבלת אתkeyואתClassב-methodcreate.
גרסה 2.0.0
גרסה 2.0.0
21 בספטמבר 2018
Lifecycle 2.0.0 יוצא עם תיקון באג אחד מ-2.0.0-rc01 ב-ViewModel.
תיקוני באגים
- תוקן כלל proguard של ViewModel שהסיר באופן שגוי בנאים b/112230489
גרסה 2.0.0-beta01
2 ביולי 2018
תיקוני באגים
- תוקן כלל proguard של LifecycleObserver כדי לשמור רק על יישומים, ולא על ממשקי משנה b/71389427
- תוקנו כללי proguard של ViewModel כדי לאפשר ערפול וכיווץ
גרסאות קודמות ל-AndroidX
בגרסאות Lifecycle שלפני AndroidX שמופיעות בהמשך, צריך לכלול את יחסי התלות הבאים:
dependencies {
def lifecycle_version = "1.1.1"
// ViewModel and LiveData
implementation "android.arch.lifecycle:extensions:$lifecycle_version"
// alternatively - just ViewModel
implementation "android.arch.lifecycle:viewmodel:$lifecycle_version" // For Kotlin use viewmodel-ktx
// alternatively - just LiveData
implementation "android.arch.lifecycle:livedata:$lifecycle_version"
// alternatively - Lifecycles only (no ViewModel or LiveData).
// Support library depends on this lightweight import
implementation "android.arch.lifecycle:runtime:$lifecycle_version"
annotationProcessor "android.arch.lifecycle:compiler:$lifecycle_version" // For Kotlin use kapt instead of annotationProcessor
// alternately - if using Java8, use the following instead of compiler
implementation "android.arch.lifecycle:common-java8:$lifecycle_version"
// optional - ReactiveStreams support for LiveData
implementation "android.arch.lifecycle:reactivestreams:$lifecycle_version"
// optional - Test helpers for LiveData
testImplementation "android.arch.core:core-testing:$lifecycle_version"
}
גרסה 1.1.1
21 במרץ 2018
רק שינוי קטן אחד: android.arch.core.util.Function הועבר מ-arch:runtime ל-arch:common. כך אפשר להשתמש בו בלי התלות בזמן הריצה, למשל ב-paging:common שבהמשך.
lifecycle:common הוא יחסי תלות של lifecycle:runtime, ולכן השינוי הזה לא משפיע על lifecycle:runtime ישירות, אלא רק על מודולים שתלויים ישירות ב-lifecycle:common, כמו Paging.
גרסה 1.1.0
22 בינואר 2018
שינויים באריזה
עכשיו יש תלות חדשה וקטנה בהרבה:
android.arch.lifecycle:livedata:1.1.0android.arch.lifecycle:viewmodel:1.1.0
שינויים ב-API
- האפשרויות
LifecycleActivityו-LifecycleFragmentשהוצאו משימוש הוסרו. במקומן אפשר להשתמש באפשרויותFragmentActivity,AppCompatActivityאו בתמיכהFragment. - הערות
@NonNullנוספו אלViewModelProvidersואלViewModelStores - ה-constructor
ViewModelProvidersהוצא משימוש – צריך להשתמש ישירות בשיטות הסטטיות שלו - האפשרות
ViewModelProviders.DefaultFactoryהוצאה משימוש. במקומה יש להשתמש באפשרותViewModelProvider.AndroidViewModelFactory - נוספה השיטה הסטטית
ViewModelProvider.AndroidViewModelFactory.getInstance(Application)לאחזורFactoryסטטי שמתאים ליצירת מופעים שלViewModelו-AndroidViewModel.