Savedstate

כתיבת רכיבים שניתנים להוספה, ששומרים את מצב ממשק המשתמש כשתהליך מסתיים ומשחזרים אותו כשהתהליך מתחיל מחדש.
העדכון האחרון גרסה יציבה גרסה מועמדת להפצה גרסת בטא גרסת אלפא
‫11 במרץ 2026 1.4.0 - - ‎1.5.0-alpha01

הצהרה על יחסי תלות

כדי להוסיף תלות ב-SavedState, צריך להוסיף את מאגר Google Maven לפרויקט. מידע נוסף זמין במאמר בנושא מאגר Maven של Google.

אתם יכולים להוסיף את יחסי התלות של הארטיפקטים שאתם צריכים בקובץ build.gradle של האפליקציה או המודול:

מגניב

dependencies {
    // Java language implementation
    implementation "androidx.savedstate:savedstate:1.4.0"

    // Kotlin
    implementation "androidx.savedstate:savedstate-ktx:1.4.0"
}

Kotlin

dependencies {
    // Java language implementation
    implementation("androidx.savedstate:savedstate:1.4.0")

    // Kotlin
    implementation("androidx.savedstate:savedstate-ktx:1.4.0")
}

מידע נוסף זמין במאמר הוספת יחסי תלות ב-build.

משוב

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

יצירת דיווח על בעיה חדשה

מידע נוסף זמין במאמרי העזרה בנושא Issue Tracker.

גירסה 1.5

גרסה ‎1.5.0-alpha01

‫11 במרץ 2026

androidx.savedstate:savedstate-*:1.5.0-alpha01 מופץ. גרסה ‎1.5.0-alpha01 מכילה את השמירות האלה.

תכונות חדשות

  • הפעלת סריאליזציה גנרית לאובייקטים של SavedState, שמאפשרת לקודד ולפענח אותם באמצעות פורמטים סטנדרטיים כמו CBOR או JSON בכל הפלטפורמות. (Iafda4, ‏ b/425919375)

שינויים ב-API

  • הוספנו פונקציות הרחבה putKotlinSerializable ו-getKotlinSerializable ל-SavedStateWriter ול-SavedStateReader כדי לאפשר אחסון ואחזור ישירים של אובייקטים מסוג Kotlin Serializable באמצעות מפתחות, וכך לייעל את השילוב עם ממשקי API של SavedState. (Iba02e)
  • הוספנו פונקציות factory ל-LifecycleOwner, ל-ViewModelStoreOwner ול-SavedStateRegistryOwner כדי לצמצם את קוד ה-boilerplate כשיוצרים רכיבי בעלים בהתאמה אישית. (I9682c)
  • הפעלת השמירה והשחזור של SnapshotStateSet (שנוצר באמצעות mutableStateSetOf()) באמצעות rememberSerializable. עכשיו אפשר להשתמש ב-SnapshotStateSet ב-rememberSerializable בלי להגדיר שומר מסך מותאם אישית. (I9a4ed, b/449498367)

גרסה 1.4

גרסה 1.4.0

‫5 בנובמבר 2025

androidx.savedstate:savedstate-*:1.4.0 מופץ. גרסה 1.4.0 מכילה את השמירות האלה.

גרסה ‎1.4.0-rc01

‫22 באוקטובר 2025

androidx.savedstate:savedstate-*:1.4.0-rc01 יוצא ללא שינויים מאז גרסה 1.4.0-beta01. גרסה ‎1.4.0-rc01 מכילה את השמירות האלה.

גרסה ‎1.4.0-beta01

‫8 באוקטובר 2025

הגרסה androidx.savedstate:savedstate-*:1.4.0-beta01 הושקה ללא שינויים משמעותיים מאז גרסת האלפא האחרונה. גרסה ‎1.4.0-beta01 מכילה את השמירות האלה.

גרסה ‎1.4.0-alpha03

‫27 באוגוסט 2025

androidx.savedstate:savedstate-*:1.4.0-alpha03 מופץ. גרסה ‎1.4.0-alpha03 מכילה את השמירות האלה.

שינויים ב-API

  • הוספנו תמיכה בסוגים שניתן להגדיר כ-nullable ב-encodeToSavedState וב-decodeFromSavedState. (I79062, ‏ b/439527454)
  • עדכון של Compose לגרסה 1.9.0. (I2b9de)

גרסה ‎1.4.0-alpha02

‫13 באוגוסט 2025

androidx.savedstate:savedstate-*:1.4.0-alpha02 מופץ. גרסה ‎1.4.0-alpha02 מכילה את השמירות האלה.

גרסה ‎1.4.0-alpha01

‫30 ביולי 2025

androidx.savedstate:savedstate-*:1.4.0-alpha01 מופץ. גרסה ‎1.4.0-alpha01 מכילה את השמירות האלה.

שינויים ב-API

  • הוספנו תמיכה מקורית בסוגים שניתן להגדיר כ-nullable ב-SavedStateRegistryOwner.saved, כדי לפשט את השמירה והשחזור של מאפיינים שניתן להגדיר כ-nullable. ‫(Ia632, ‏ b/421325690)

גרסה 1.3

גרסה 1.3.3

‫17 בספטמבר 2025

androidx.savedstate:savedstate-*:1.3.3 מופץ. גרסה 1.3.3 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה שגיאה שקשורה לתוסף Compose Compiler שלא הוחל, שגרמה לשבירה של ארטיפקטים של SavedState KMP. (Id2290, b/443965665)

גרסה 1.3.2

‫27 באוגוסט 2025

androidx.savedstate:savedstate-*:1.3.2 מופץ. גרסה 1.3.2 מכילה את השמירות האלה.

תכונות חדשות

  • הוספת יעדים חדשים של Kotlin Multiplatform‏ (KMP) לארטיפקט SavedState‏ *-compose. מחזור החיים תומך עכשיו בפלטפורמות הבאות: JVM (Android ומחשבים), Native (Linux,‏ iOS,‏ watchOS,‏ macOS,‏ MinGW) ו-Web (JavaScript,‏ WasmJS). (/Idcf26)

גרסה 1.3.1

‫16 ביולי 2025

androidx.savedstate:savedstate-*:1.3.1 מופץ. גרסה 1.3.1 מכילה את השמירות האלה.

תיקוני באגים

  • מוסיפים את כל יעדי ה-KMP שנתמכים על ידי הערות ל-SavedState artifacts.
  • נוספו יעדים חדשים של Kotlin Multiplatform‏ (KMP) לארטיפקטים של SavedState. ‫SavedState תומך עכשיו בפלטפורמות הבאות: JVM (Android ומחשב), Native (Linux,‏ iOS,‏ watchOS,‏ macOS,‏ MinGW) ו-Web (JavaScript,‏ WasmJS). שימו לב שלא נוספו יעדי KMP חדשים לארטיפקטים של *-compose, כי זה תלוי בגרסה היציבה של Compose 1.9. ‫(I062f4).

גרסה 1.3.0

‫7 במאי 2025

androidx.savedstate:savedstate-*:1.3.0 מופץ. גרסה 1.3.0 מכילה את השמירות האלה.

שינויים חשובים מאז גרסה 1.2.0

  • העברנו את LocalSavedStateRegistryOwner מ-Compose UI למודול החדש savedstate-compose כדי שאפשר יהיה להשתמש בממשקי העזרה מבוססי-Compose מחוץ ל-Compose UI. תמיד צריך להשתמש בשיטה הזו כשמשתמשים ב-Compose UI 1.9.0-alpha02 ומעלה, אבל היא תואמת לאחור כך שאפשר להשתמש בה בכל הגרסאות של Compose.
  • התוספים של savedstate-ktx kotlin הועברו עכשיו למודול הבסיסי של savedstate.
  • עכשיו אפשר לפתור מקרים של SavedStateRegistryOwner שאוחזרו באמצעות findViewTreeSavedStateRegistryOwner דרך הורים לא רציפים של תצוגה, כמו ViewOverlay. מידע נוסף על הורים של תצוגות לא רציפות זמין בהערות הגרסה של ליבת או במאמרי העזרה בכתובת ViewTree.setViewTreeDisjointParent.

Kotlin Multiplatform

  • מודול SavedState תואם עכשיו ל-KMP. הפלטפורמות הנתמכות כוללות עכשיו את Android,‏ iOS,‏ Linux,‏ Mac וסביבות שולחן עבודה של JVM.
  • הוספנו את סוג הנתונים SavedState opaque כהפשטה כדי לספק דרך עקבית לשמירה ולשחזור של מצב האפליקציה ב-KMP. הוא כולל את SavedStateReader ו-SavedStateWriter לשינוי המצב שצריך לשמור. ב-Android, ‏ SavedState הוא כינוי סוג ל-Bundle, שמבטיח תאימות בינארית ומקל על העברת ממשקי API קיימים לקבוצת מקור משותפת. בפלטפורמות אחרות, SavedState הוא מופע של Map<String, Any>.

      // 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")
      }
    

תמיכה ב-KotlinX Serialization

  • SavedState כולל עכשיו תמיכה ב-KotlinX Serialization. אפשר להמיר כיתה עם ההערה @Serializable ל-SavedState באמצעות השיטות encodeToSavedState ו-decodeFromSavedState. הערך SavedState שמוחזר הוא Bundle רגיל ב-Android, ואפשר להשתמש בו בכל API שמקבל SavedState.Bundle

    @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)
    }
    
  • רוב הסוגים (כמו סוגים פרימיטיביים) נתמכים ישירות בלי צורך בהגדרה, אבל אפשר למצוא סדרות נוספות שאפשר להשתמש בהן עם @Serializable(with = ___:class) בחבילה androidx.savedstate.serialization.serializers במודול savedstate ובחבילה androidx.savedstate.compose.serialization.serializers במודול savedstate-compose.

  • הוספנו גם את saved, נציג מאפיינים עצלן, כדי לאפשר אחסון קל של מחלקות @Serializable ב-SavedStateRegistryOwner (לדוגמה, ComponentActivity,‏ Fragment וכו') ושחזור אוטומטי של המחלקות האלה לאחר סיום התהליך ויצירה מחדש. שימו לב שהפונקציה saved delegate היא עצלה, והיא לא תפעיל את פונקציית ה-lambda‏ init או תשמור משהו ב-SavedStateRegistry עד שתהיה אליה גישה.

    @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.

גרסה ‎1.3.0-rc01

‫23 באפריל 2025

androidx.savedstate:savedstate-*:1.3.0-rc01 מופץ. גרסה ‎1.3.0-rc01 מכילה את השמירות האלה.

גרסה ‎1.3.0-beta01

‫9 באפריל 2025

androidx.savedstate:savedstate-*:1.3.0-beta01 מופץ. גרסה ‎1.3.0-beta01 מכילה את השמירות האלה.

עדכונים של יחסי תלות

  • הספרייה הזו מטרגטת עכשיו את רמת השפה Kotlin 2.0 ונדרשת KGP 2.0.0 או גרסה חדשה יותר. (Idb6b5)

גרסה ‎1.3.0-alpha11

‫26 במרץ 2025

הגרסה androidx.savedstate:savedstate-*:1.3.0-alpha11 הושקה ללא שינויים משמעותיים שגלויים לציבור. גרסה ‎1.3.0-alpha11 מכילה את השמירות האלה.

גרסה ‎1.3.0-alpha10

‫12 במרץ 2025

androidx.savedstate:savedstate-*:1.3.0-alpha10 מופץ. גרסה ‎1.3.0-alpha10 מכילה את השמירות האלה.

תכונות חדשות

  • הוספת וריאציות של שיטות לא מוחשיות לאוספים של get ב-SavedStateReader. (I0b641, ‏ b/399820614)
  • הוספת encodeDefaults ל-SavedStateConfiguration, כדי לאפשר התאמה אישית של קידוד מאפיינים עם ערכי ברירת מחדל. ‫(I893cc, ‏ b/395104517)
  • מוסיפים את SnapshotStateMapSerializer לתמיכה ב-mutableStateMapOf. (Ie6f19, b/378895074)
  • מוסיפים את SnapshotStateListSerializer לתמיכה ב-mutableStateListOf. (I4d888, b/378895074)
  • מוסיפים getOrNull שיטות חלופיות לוריאציות של SavedStateReader.get. השיטות האלה יבצעו המרה אוטומטית של ערכים פרימיטיביים לאובייקטים. (I6228c, ‏ b/399820614)

שינויים ב-API

  • הסרת getOrElse מהחשבון SavedStateReader לטובת getOrNull() ?: else(). (I87317, ‏ b/399820614)
  • הסרת שינוי inline מהשיטות SavedStateReader ו-SavedStateWriter. (If2a02, b/399820614)
  • הסרה של סדרות (serializers) מובנות של רשימות ומערכים ספציפיים ל-Android מ-API ציבורי (Ida293)
  • החלפה של SparseParcelableArraySerializer ב-SparseArraySerializer (I91de8)
  • כדי שכל הפונקציות SavedStateReader.get יתנהגו באופן עקבי, הן יחזירו שגיאה אם סוג הערך לא תואם לסוג ההחזרה (I78c4a, b/399317598)
  • שינוי השם של SavedState*Delegates לSavedState*Delegate. ‫(I8589b, ‏ b/399629301)
  • שינוי השם של SavedStateConfig לSavedStateConfiguration. (I043a5, ‏ b/399629301)

גרסה ‎1.3.0-alpha09

‫26 בפברואר 2025

androidx.savedstate:savedstate-*:1.3.0-alpha09 מופץ. גרסה ‎1.3.0-alpha09 מכילה את השמירות האלה.

תכונות חדשות

  • הוספת חזרה לערך ברירת מחדל לסוגים מובנים, כדי להבטיח שכל הסוגים שנתמכים על ידי Bundle יוכלו לשמש עם encodeAsSavedState/decodeFromSavedState כברירת מחדל, או למאפיינים במחלקות @Serializable, באמצעות ההערה @Contextual. (Ic01d2)
  • כולל תמיכה ב-classDiscriminator וב-classDiscriminatorMode ב-SavedStateConfig. ‫(I69b66, ‏ b/395104517)

שינויים ב-API

  • הוספת הפרמטר SavedStateConfig לנציגי saved() (I39b3a)
  • הופך סדרות מובנות לאובייקטים מסוג singleton ‏ (Ifeee4)
  • מאפייני SavedStateConfig הם עכשיו ציבוריים, כך שמודולים אחרים יכולים להשתמש בהגדרות האלה. (Ie5f49, ‏ b/378897438)
  • תמיכה ב-@Serializer(with = ...) עבור MutableStateFlowSerializer ו-MutableStateSerializer (I90953)
  • הוספת contentDeepToString אל SavedStateReader (I14d10)

גרסה ‎1.3.0-alpha08

‫12 בפברואר 2025

androidx.savedstate:savedstate-*:1.3.0-alpha08 מופץ. גרסה ‎1.3.0-alpha08 מכילה את השמירות האלה.

תכונות חדשות

  • העברנו את MutableStateSerializer אל savedstate-compose מ-lifecycle-viewmodel-compose, כך שתוכלו להשתמש בממשקי ה-API של SavedState Serialization עם MutableState של Compose. (I4f690, b/378895074)

שינויים ב-API

  • מוסיפים פונקציית יצירה כדי ליצור SavedState מSavedState קיים. (I39f9a)
  • הוספנו תמיכה ב-Array<SavedState> וב-List<SavedState> ב-androidx.savedstate. (Idd8a5)
  • הוספת פרמטר אופציונלי SavedStateConfig לקידוד/פענוח של SavedState (I6c4c0)

גרסה ‎1.3.0-alpha07

‫29 בינואר 2025

androidx.savedstate:savedstate-*:1.3.0-alpha07 מופץ. גרסה ‎1.3.0-alpha07 מכילה את השמירות האלה.

תכונות חדשות

  • מוסיפים MutableStateFlowSerializer כדי ליצור סדרות של kotlinx.coroutines.flow.MutableStateFlow. (I6a892, b/378895070)

שינויים ב-API

  • החלפת פונקציות מואצלות בעלות עומס יתר SavedStateRegistryOwner.saved() בפרמטרים שמוגדרים כברירת מחדל (Icd1c1)
  • יצירת תקציר של JavaSerializableSerializer ושל ParcelableSerializer (I268f6)
  • הסרת T : CharSequence כללי מהחשבון CharSequenceSerializer (Ib40bd)

גרסה ‎1.3.0-alpha06

‫11 בדצמבר 2024

androidx.savedstate:savedstate-*:1.3.0-alpha06 מופץ. גרסה ‎1.3.0-alpha06 מכילה את השמירות האלה.

תכונות חדשות

  • SavedState KMP תומך עכשיו ב: IBinder, ‏ Size, ‏ SizeF, ‏ Array<Parcelable>, ‏ SparseArray<Parcelable> ו-Serializable (Android). (I1ba94, b/334076622)
  • מוסיפים מופעים של KSerializer שאפשר להשתמש בהם כדי לקודד ולפענח סוגי Java ו-Android שנתמכים על ידי Bundle, על ידי סימון השדה הרלוונטי בכיתה באמצעות @Serializable(with = ParcelableSerializer::class). (I8c10f, I28caf, b/376026712)
  • עכשיו אפשר לפתור מקרים של SavedStateRegistryOwner שאוחזרו באמצעות findViewTreeSavedStateRegistryOwner דרך הורים לא רציפים של תצוגה, כמו ViewOverlay. מידע נוסף על הורים של תצוגות לא רציפות זמין בהערות הגרסה של ליבת או במאמרי העזרה בכתובת ViewTree.setViewTreeDisjointParent. (Iccb33)

שינויים ב-API

  • שיפור העקביות של שמות החבילות והארגון שלהן בהתאם ל-SavedStateRegistryOwnerDelegate (I8c135, ‏ b/376026744)

גרסה ‎1.3.0-alpha05

‫13 בנובמבר 2024

androidx.savedstate:savedstate-*:1.3.0-alpha05 מופץ. גרסה ‎1.3.0-alpha05 מכילה את השמירות האלה.

תמיכה ב-KotlinX Serialization

  • SavedState כולל עכשיו תמיכה ב-KotlinX Serialization. אפשר להמיר כיתה עם ההערה @Serializable ל-SavedState באמצעות השיטות encodeToSavedState ו-decodeFromSavedState. הערך SavedState שמוחזר הוא Bundle רגיל ב-Android, ואפשר להשתמש בו בכל API שמקבל SavedState.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 delegate היא עצלה, והיא לא תפעיל את פונקציית ה-lambda‏ 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 ל-SavedState KMP. (Iea71d, b/334076622)
  • הוספת פרמטרים נוספים של savedState יצרן שתומכים ב-Map<String, Any> ראשוני (I9b37d, ‏ b/334076622)
  • ספריית SavedState KMP תומכת עכשיו בהשוואה בין contentDeepEquals. ‫(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 opaque כהפשטה כדי לספק דרך עקבית לשמירה ולשחזור של מצב האפליקציה ב-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 מכילה את השמירות האלה.

עדכונים של יחסי תלות

גרסה 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 הזה מחליף את savedstate-ktx API של findViewTreeSavedStateRegistryOwner.

שינויים בהתנהגות

  • SavedStateRegistry כבר לא שומר חבילה ריקה אם אין מצב לשמירה.

גרסה ‎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 מכילה את השמירות האלה.

שינויים במסמכי התיעוד

  • המסמכים SavedStateRegistryOwner Kdocs עודכנו כדי להבהיר את האחריות והחוזה של הבעלים לגבי אופן היישום של הממשק או מתי צריך להפעיל את ה-methods ב-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 הזה מחליף את savedstate-ktx API של 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 מכילה את השמירות האלה.

תכונות חדשות

  • מעכשיו אפשר ב-SavedStateRegistryController לצרף מוקדם יותר את SavedStateRegistry דרך performAttach(). (Ice4bf)

שינויים בהתנהגות

  • SavedStateRegistry כבר לא שומר חבילה ריקה אם אין מצב לשמירה. ‫(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: ‏ViewTreeSavedStateRegistryOwner.get(View) API חדש מאפשר לכם לאחזר את SavedStateRegistry שמכיל מופע של View. כדי שהנתונים יאוכלסו בצורה נכונה, צריך לשדרג ל-Activity 1.2.0, ‏ Fragment 1.3.0 ו-AppCompat 1.3.0-alpha01 או לגרסה מתקדמת יותר.
  • savedstate-ktx ארטיפקט: נוסף ארטיפקט חדש של savedstate-ktx עם תוסף Kotlin לעבודה עם ViewTreeSavedStateRegistryOwner.findViewTreeSavedStateRegistryOwner()

גרסה ‎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. כדי שהנתונים יאוכלסו בצורה נכונה, צריך לשדרג ל-Activity 1.2.0-alpha05, ‏ Fragment 1.3.0-alpha05 ו-AppCompat 1.3.0-alpha01. (aosp/1298679)
  • נוסף ארטיפקט חדש savedstate-ktx עם הרחבת Kotlin לעבודה עם ViewTreeSavedStateRegistryOwner.findViewTreeSavedStateRegistryOwner() (aosp/1299434)

גרסה 1.0.0

גרסה 1.0.0

5 בספטמבר 2019

androidx.savedstate:savedstate:1.0.0 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.

התכונות העיקריות של SavedState 1.0.0

androidx.savedstate עברה לגרסה יציבה. זוהי קבוצה של ממשקי API שמאפשרים למפתחים להוסיף רכיבים לתהליך השחזור או השמירה של מצב המופע. נקודת הכניסה הראשית של ה-API היא SavedStateRegistry, שמאפשרת לאחזר מצבים שנשמרו בעבר באמצעות consumeRestoredStateForKey ולרשום קריאה חוזרת (callback) ל-registerSavedStateProvider כדי לספק מצב שמור ברגע שהמערכת מבקשת אותו.

גרסה ‎1.0.0-rc01

‫2 ביולי 2019

androidx.savedstate:savedstate:1.0.0-rc01 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.

תיקוני באגים

  • תוקן כלל שגוי של ProGuard ‏ (b/132655499)

גרסה ‎1.0.0-beta01

‫7 במאי 2019

androidx.savedstate:savedstate:1.0.0-beta01 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.

גרסה ‎1.0.0-alpha02

‫13 במרץ 2019

androidx.savedstate:savedstate:1.0.0-alpha02 מופץ. ‫androidx.savedstate:savedstate משלב את פריטי המידע שנוצרו בתהליך פיתוח (Artifact) androidx.savedstate:savedstate-bundle ו-androidx.savedstate:savedstate-common לפריט מידע אחד, כי הוחלט לפשט את התשתית של savedstate ולהסיר את הגנריות מ-SavedStateRegistry. לכן, אין צורך במודולים נפרדים.

כאן אפשר לראות את הרשימה המלאה של פעולות ה-commit שכלולות בגרסה הזו.

תכונות חדשות

  • צירפנו את 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 מסוג אלפא שמאפשרים למפתחים להוסיף רכיבים לתהליך השחזור או השמירה של מצב המופע. נקודת הכניסה הראשית של ה-API היא SavedStateRegistry<T>, שמאפשרת לאחזר מצב שנשמר בעבר באמצעות consumeRestoredStateForKey ולרשום קריאה חוזרת ל-registerSavedStateProvider כדי לספק מצב שנשמר ברגע שהמערכת מבקשת אותו.