Savedstate

כותבים רכיבים נשלפים ששומרים את מצב ממשק המשתמש כשתהליך מסוים מסתיים, ומשחזרים אותו כשהתהליך מופעל מחדש.
העדכון האחרון גרסה יציבה גרסה מועמדת להפצה גרסת בטא גרסה אלפא
30 באוקטובר 2024 1.2.1 - - 1.3.0-alpha04

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

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

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

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

שינויים במסמכים

  • המסמכים של 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 הזה מחליף את ה-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 לא שומר יותר חבילה ריקה. (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. כדי לאכלס את הנתונים בצורה נכונה, צריך לשדרג לפעילות 1.2.0, Fragment 1.3.0 ו-AppCompat 1.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. כדי לאכלס את השדה הזה בצורה נכונה, צריך לשדרג ל-Activity 1.2.0-alpha05, ל-Fragment 1.3.0-alpha05 ול-AppCompat 1.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 משוחרר. אפשר למצוא כאן את ההתחייבות שכלולה בגרסה הזו.

תכונות עיקריות של 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) שכלולות בגרסה הזו.

תיקוני באגים

גרסה 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 משלבת את הפריטים 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 כדי לספק מצב ששמור ברגע שהמערכת מבקשת זאת.