Savedstate
העדכון האחרון | גרסה יציבה | גרסה מועמדת להפצה | גרסת בטא | גרסה אלפא |
---|---|---|---|---|
13 בנובמבר 2024 | 1.2.1 | - | - | 1.3.0-alpha05 |
הצהרת יחסי תלות
כדי להוסיף תלות ב-SavedState, צריך להוסיף את מאגר Google Maven לפרויקט. למידע נוסף, אפשר לקרוא את המאמר מאגר Maven של Google.
מוסיפים את יחסי התלות של הארטיפקטים הנדרשים בקובץ build.gradle
של האפליקציה או המודול:
Groovy
dependencies { // Java language implementation implementation "androidx.savedstate:savedstate:1.2.1" // Kotlin implementation "androidx.savedstate:savedstate-ktx:1.2.1" }
Kotlin
dependencies { // Java language implementation implementation("androidx.savedstate:savedstate:1.2.1") // Kotlin implementation("androidx.savedstate:savedstate-ktx:1.2.1") }
מידע נוסף על יחסי תלות זמין במאמר הוספת יחסי תלות ל-build.
משוב
המשוב שלכם עוזר לנו לשפר את Jetpack. אם נתקלתם בבעיות חדשות או שיש לכם רעיונות לשיפור הספרייה הזו, נשמח לשמוע מכם. לפני שיוצרים בעיה חדשה, כדאי לעיין בבעיות הקיימות בספרייה הזו. כדי להצביע על בעיה קיימת, לוחצים על לחצן הכוכב.
מידע נוסף זמין במסמכי התיעוד של Issue Tracker.
גרסה 1.3
גרסה 1.3.0-alpha05
13 בנובמבר 2024
androidx.savedstate:savedstate-*:1.3.0-alpha05
משוחרר. גרסת 1.3.0-alpha05 כוללת את ההוספות האלה.
תמיכה בסריאליזציה של KotlinX
SavedState
כולל עכשיו תמיכה ב-KotlinX Serialization. אפשר להמיר סיווג עם הערה@Serializable
לסיווגSavedState
באמצעות השיטותencodeToSavedState
ו-decodeFromSavedState
. הערךSavedState
המוחזר הואBundle
רגיל ב-Android, וכל ממשק API שתומך ב-Bundle
יכול להשתמש בו. (I6f59f, b/374102924)@Serializable data class Person(val firstName: String, val lastName: String) fun main() { val person = Person("John", "Doe") val encoded: SavedState = encodeToSavedState(person) val decoded: Person = decodeFromSavedState(encoded) }
הוספנו גם את
saved
, נציג נכס עצלן, כדי שיהיה קל לאחסן כיתות@Serializable
ב-SavedStateRegistryOwner
(למשל:ComponentActivity
,Fragment
וכו') ולאפשר לשחזר אותן באופן אוטומטי לאחר מותו של התהליך וליצור אותן מחדש. חשוב לזכור שהממשק הנציגsaved
הוא עצלן, והוא לא יבצע קריאה לפונקציית הלמהinit
או ישמור משהו ב-SavedStateRegistry
עד שתתבצע גישה אליו. (I66739, b/376027806)@Serializable data class Person(val firstName: String, val lastName: String) class MyActivity : ComponentActivity() { var person by saved { Person("John", "Doe") } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) this.person = Person("Jane", "Doe") } }
יש גם גרסה דומה של הענקת גישה לנכס
saved
עבורSavedStateHandle
שנוספה במחזור חיים2.9.0-alpha07
.
שינויים ב-API
- מוסיפים את
toMap
ל-SavedState
, וכך כלSavedState
יכול להפוך ל-Map
רגיל (העתקה שטחית). (I487b9, b/334076622) SavedState
KMP תומך עכשיו במערכים. (Ic0552, b/334076622)
גרסה 1.3.0-alpha04
30 באוקטובר 2024
androidx.savedstate:savedstate-*:1.3.0-alpha04
משוחרר. גרסת 1.3.0-alpha04 מכילה את ההוספות האלה.
שינויים ב-API
- SavedState KMP תומך עכשיו ב-Char. (I9ac2f, b/334076622)
- מוסיפים את
putNull
ו-isNull
ל-KMP של SavedState. (Iea71d, b/334076622) - הוספת פרמטרים נוספים של מפעל
savedState
שתומכים ב-Map<String, Any>
ראשוני (I9b37d, b/334076622) - עכשיו יש תמיכה בהשוואה של
contentDeepEquals
ב-SavedState KMP. (Ia515c, b/334076622) - עכשיו יש ב-SavedState KMP תמיכה ב-Long. (I4c180, b/334076622)
גרסה 1.3.0-alpha03
16 באוקטובר 2024
androidx.savedstate:savedstate-*:1.3.0-alpha03
פורסם ללא שינויים משמעותיים. גרסת 1.3.0-alpha03 מכילה את ההוספות האלה.
גרסה 1.3.0-alpha02
2 באוקטובר 2024
androidx.savedstate:savedstate-*:1.3.0-alpha02
משוחרר. גרסת 1.3.0-alpha02 כוללת את ההוספות האלה.
Kotlin Multiplatform
- המודול
SavedState
תואם עכשיו ל-KMP. הפלטפורמות הנתמכות כוללות עכשיו סביבות שולחן עבודה של Android, iOS, Linux, Mac ו-JVM. (I26305, b/334076622)
תכונות חדשות
- הצגת סוג אטום
SavedState
כאבסוקציה כדי לספק דרך עקבית לשמירה ולשחזור של מצב האפליקציה ב-KMP. הוא כולל אתSavedStateReader
ו-SavedStateWriter
לשינוי המצב שרוצים לשמור. ב-Android,SavedState
הוא כינוי לסוג שלBundle
, שמבטיח תאימות בינארית ומקל על העברת ממשקי API קיימים לקבוצת מקורות משותפת. בפלטפורמות אחרות,SavedState
הוא מכונה שלMap<String, Any>
. (I18575, b/334076622)
// Create a new SavedState object using the savedState DSL:
val savedState = savedState {
putInt("currentPage", 1)
putString("filter", "favorites")
}
// Read from a SavedState object
val currentPage = savedState.read { getInt("currentPage") }
// Edit an existing SavedState object
savedState.write {
remove("currentPage")
}
שינויים ב-API
SavedStateRegistry
ו-SavedStateRegistryController
תואמים עכשיו ל-KMP. (Id7bb8, b/334076622)SavedState
, SavedStateWriter
ו-SavedStateReader
תואמים עכשיו ל-KMP. (I26305, b/334076622)
גרסה 1.3.0-alpha01
7 באוגוסט 2024
androidx.savedstate:savedstate:1.3.0-alpha01
ו-androidx.savedstate:savedstate-ktx:1.3.0-alpha01
משוחררים. גרסת 1.3.0-alpha01 מכילה את ההוספות האלה.
שינויים ב-API
- התוספים של
savedstate-ktx
ל-Kotlin הועברו למעכשיו למודול הבסיסי של savedstate. (I1cc18, b/274803094)
הערה
- עדכון
compileSdk
ל-35 (5dc41be)
גרסה 1.2.1
גרסה 1.2.1
22 במרץ 2023
androidx.savedstate:savedstate:1.2.1
ו-androidx.savedstate:savedstate-ktx:1.2.1
משוחררים. גרסה 1.2.1 מכילה את השמירות האלה.
עדכוני יחסי תלות
- עכשיו
SavedState
תלוי ב-Lifecycle2.6.1
. (c1f621)
גרסה 1.2.0
גרסה 1.2.0
29 ביוני 2022
androidx.savedstate:savedstate:1.2.0
ו-androidx.savedstate:savedstate-ktx:1.2.0
משוחררים. גרסה 1.2.0 מכילה את ההוספות האלה.
שינויים חשובים מאז גרסה 1.1.0
SavedStateRegistryController
מאפשר עכשיו לצרף מוקדם אתSavedStateRegistry
דרךperformAttach()
.- עכשיו אפשר לאחזר
SavedStateProvider
שרשום ב-SavedStateRegistry
דרךgetSavedStateProvider()
. - ספריית
SavedState
נכתבה מחדש ב-Kotlin.- עבור
SavedStateRegistryOwner
, זהו שינוי לא תואם למקור לכיתות שנכתבו ב-Kotlin – עכשיו צריך לשנות את ברירת המחדל של המאפייןsavedStateRegistry
במקום להטמיע את הפונקציה הקודמתgetSavedStateRegistry()
. - ב-
ViewTreeSavedStateRegistryOwner
, זהו שינוי לא תואם למקור עבור הכיתות שנכתבו ב-Kotlin – עכשיו צריך לייבא ישירות את שיטות ההרחבה של Kotlin ב-View
שלandroidx.savedstate.setViewTreeSavedStateRegistryOwner
ו-androidx.savedstate.findViewTreeSavedStateRegistryOwner
ולהשתמש בהן כדי להגדיר ולמצוא בעלים שהוגדר בעבר. ה-API הזה מחליף את ה-API שלsavedstate-ktx
ב-findViewTreeSavedStateRegistryOwner
.
- עבור
שינויים בהתנהגות
SavedStateRegistry
לא שומר יותר חבילת Bundle ריקה אם אין מצב שצריך לשמור.
גרסה 1.2.0-rc01
11 במאי 2022
androidx.savedstate:savedstate:1.2.0-rc01
ו-androidx.savedstate:savedstate-ktx:1.2.0-rc01
משוחררים. גרסה 1.2.0-rc01 כוללת את ההוספות האלה.
שינויים במסמכי התיעוד
- מסמכי ה-Kdocs של
SavedStateRegistryOwner
עודכנו כדי להבהיר את האחריות והחוזה של הבעלים לגבי האופן שבו הוא צריך להטמיע את הממשק או מתי הוא צריך להפעיל את השיטות ב-SavedStateRegistryController
. (Iefc95, b/228887344)
גרסה 1.2.0-beta01
20 באפריל 2022
androidx.savedstate:savedstate:1.2.0-beta01
ו-androidx.savedstate:savedstate-ktx:1.2.0-beta01
משוחררים. גרסה 1.2.0-beta01 כוללת את ההצהרות האלה.
שינויים ב-API
- הכיתות
SavedStateRegistry
ו-ViewTreeSavedStateRegistryOwner
נכתבו מחדש ב-Kotlin. ב-ViewTreeSavedStateRegistryOwner
, זהו שינוי לא תואם למקור עבור הכיתות שנכתבו ב-Kotlin – עכשיו צריך לייבא ישירות את שיטות ההרחבה של Kotlin ב-View
שלandroidx.savedstate.setViewTreeSavedStateRegistryOwner
ו-androidx.savedstate.findViewTreeSavedStateRegistryOwner
ולהשתמש בהן כדי להגדיר ולמצוא בעלים שהוגדר בעבר. ה-API הזה מחליף את ה-API שלsavedstate-ktx
ב-findViewTreeSavedStateRegistryOwner
. הקוד הזה תואם לקוד הבינארי ותמיד תואם למקור של הטמעות שנכתבו בשפת התכנות Java. (b/220191285)
גרסה 1.2.0-alpha02
6 באפריל 2022
androidx.savedstate:savedstate:1.2.0-alpha02
ו-androidx.savedstate:savedstate-ktx:1.2.0-alpha02
משוחררים. גרסה 1.2.0-alpha02 מכילה את ההוספות האלה.
תכונות חדשות
- עכשיו אפשר לאחזר
SavedStateProvider
שרשום ב-SavedStateRegistry
דרךgetSavedStateProvider()
. (I7ea47, b/215406268)
שינויים ב-API
- המחלקות
SavedStateRegistryOwner
,SavedStateRegistryController
ו-Recreator
נכתבו מחדש ב-Kotlin. עבורSavedStateRegistryOwner
, זהו שינוי לא תואם למקור לכיתות שנכתבו ב-Kotlin – עכשיו צריך לשנות את ברירת המחדל של המאפייןsavedStateRegistry
במקום להטמיע את הפונקציה הקודמתgetSavedStateRegistry()
. הספרייה תואמת לקבצים הבינאריים ולקוד המקור של הטמעות שנכתבו בשפת התכנות Java. (b/220191285)
גרסה 1.2.0-alpha01
26 בינואר 2022
androidx.savedstate:savedstate:1.2.0-alpha01
ו-androidx.savedstate:savedstate-ktx:1.2.0-alpha01
משוחררים. גרסה 1.2.0-alpha01 כוללת את ההוספות האלה.
תכונות חדשות
- עכשיו אפשר לצרף את
SavedStateRegistry
מוקדם יותר באמצעותperformAttach()
ב-SavedStateRegistryController
. (Ice4bf)
שינויים בהתנהגות
SavedStateRegistry
לא שומר יותר חבילת Bundle ריקה אם אין מצב שצריך לשמור. (aosp/1896865, b/203457956)
גרסה 1.1.0
גרסה 1.1.0
10 בפברואר 2021
androidx.savedstate:savedstate:1.1.0
ו-androidx.savedstate:savedstate-ktx:1.1.0
משוחררים. גרסה 1.1.0 כוללת את השמירות האלה.
שינויים משמעותיים מאז גרסה 1.0.0
ViewTreeSavedStateRegistryOwner
API: ממשק API חדש שלViewTreeSavedStateRegistryOwner.get(View)
שמאפשר לאחזר אתSavedStateRegistry
שמכיל את המופע שלView
. כדי לאכלס את השדה הזה בצורה נכונה, צריך לשדרג ל-Activity1.2.0
, ל-Fragment1.3.0
ול-AppCompat1.3.0-alpha01
ואילך.- ארטיפקט
savedstate-ktx
: הארטיפקט החדשsavedstate-ktx
נוסף עם תוסףfindViewTreeSavedStateRegistryOwner()
Kotlin לעבודה עםViewTreeSavedStateRegistryOwner
.
גרסה 1.1.0-rc01
16 בדצמבר 2020
הגרסאות androidx.savedstate:savedstate:1.1.0-rc01
ו-androidx.savedstate:savedstate-ktx:1.1.0-rc01
פורסמו ללא שינויים מאז 1.1.0-beta01
. גרסה 1.1.0-rc01 כוללת את השמירות האלה.
גרסה 1.1.0-beta01
1 באוקטובר 2020
הגרסאות androidx.savedstate:savedstate:1.1.0-beta01
ו-androidx.savedstate:savedstate-ktx:1.1.0-beta01
פורסמו ללא שינויים מאז 1.1.0-alpha01
. גרסה 1.1.0-beta01 כוללת את ההצהרות האלה.
גרסה 1.1.0-alpha01
20 במאי 2020
androidx.savedstate:savedstate:1.1.0-alpha01
ו-androidx.savedstate:savedstate-ktx:1.1.0-alpha01
משוחררים. גרסה 1.1.0-alpha01 כוללת את ההוספות האלה.
תכונות חדשות
- ממשק API חדש של
ViewTreeSavedStateRegistryOwner.get(View)
מאפשר לאחזר את ה-SavedStateRegistry
שמכיל את המופע שלView
. כדי לאכלס את השדה הזה בצורה נכונה, צריך לשדרג ל-Activity1.2.0-alpha05
, ל-Fragment1.3.0-alpha05
ול-AppCompat1.3.0-alpha01
. (aosp/1298679) - נוספה גרסת הארטיפקט החדשה
savedstate-ktx
עם תוסףfindViewTreeSavedStateRegistryOwner()
ל-Kotlin לעבודה עםViewTreeSavedStateRegistryOwner
. (aosp/1299434)
גרסה 1.0.0
גרסה 1.0.0
5 בספטמבר 2019
androidx.savedstate:savedstate:1.0.0
משוחרר. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.
תכונות עיקריות של SavedState 1.0.0
androidx.savedstate
הועברה לגרסה יציבה. זוהי קבוצה של ממשקי API שמאפשרים למפתחים להוסיף רכיבים לתהליך השחזור או לשמירת ה-InstanceState. נקודת הכניסה הראשית של ה-API היא SavedStateRegistry
, שמספקת דרך לאחזר מצבים שנשמרו בעבר באמצעות consumeRestoredStateForKey
ולרשום קריאה חוזרת (callback) ל-registerSavedStateProvider
כדי לספק מצב שמור ברגע שהמערכת מבקשת זאת.
גרסה 1.0.0-rc01
2 ביולי 2019
androidx.savedstate:savedstate:1.0.0-rc01
משוחרר. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.
תיקוני באגים
- תוקן כלל שגוי של Proguard (b/132655499)
גרסה 1.0.0-beta01
7 במאי 2019
androidx.savedstate:savedstate:1.0.0-beta01
משוחרר. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.
גרסה 1.0.0-alpha02
13 במרץ 2019
androidx.savedstate:savedstate:1.0.0-alpha02
משוחרר. androidx.savedstate:savedstate
משלבת את הפריטים androidx.savedstate:savedstate-bundle
ו-androidx.savedstate:savedstate-common
לפריט אחד, כי הוחלט לפשט את התשתית של savedstate ולהסיר את הפריטים הכלליים מ-SavedStateRegistry
. לכן אין צורך במודולים נפרדים.
כאן אפשר למצוא את הרשימה המלאה של השינויים שכלולים בגרסה הזו.
תכונות חדשות
- צירפנו את
SavedStateRegistry.runOnNextRecreaction(Class<? extends AutoRecreated> clazz )
למרחב המשותף. הכיתה הנתונה תיווצר והשיטהAutoRecreated.onRecreated
תופעל כשהרכיב הבעלים יופעל מחדש.
שינויים ב-API
- תרופות גנריות הוסרו מ-
SavedStateRegistry<T>
- AbstractSavedStateRegistry ו-BundlableSavedStateRegistry הוסרו. במקום זאת, צריך להשתמש ב-
SavedStateRegistry
פשוט - השם של
BundleSavedStateRegistryOwner
השתנה ל-SavedStateRegistryOwner
גרסה 1.0.0-alpha01
17 בדצמבר 2018
זו הגרסה הראשונה של SavedState
.
תכונות חדשות
androidx.savedstate
היא קבוצה חדשה של ממשקי API בגרסת אלפא שמאפשרים למפתחים להוסיף רכיבים לתהליך השחזור או לשמירת ה-InstanceState. נקודת הכניסה הראשית של ה-API היא SavedStateRegistry<T>
, שמספקת דרך לאחזר מצב ששמור בעבר באמצעות consumeRestoredStateForKey
ולרשום קריאה חוזרת (callback) ל-registerSavedStateProvider
כדי לספק מצב ששמור ברגע שהמערכת מבקשת זאת.