Savedstate

مكوّنات برمجية قابلة للإضافة تحفظ حالة واجهة المستخدم عند تعطّل إحدى العمليات وتستعيدها عند إعادة تشغيلها.
آخر الأخبار الإصدار الثابت إصدار محتمل الإصدار التجريبي الإصدار الأوّلي
‫13 أغسطس 2025 1.3.1 - - 1.4.0-alpha02

تحديد الاعتماديات

لإضافة اعتمادية على SavedState، يجب تضمين مستودع Google Maven في مشروعك. اطّلِع على مستودع Maven من Google لمزيد من المعلومات.

أضِف الاعتماديات الخاصة بالعناصر التي تحتاج إليها في ملف build.gradle لتطبيقك أو وحدتك:

Groovy

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

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

Kotlin

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

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

لمزيد من المعلومات حول الاعتماديات، يُرجى الاطّلاع على إضافة اعتماديات البناء.

الملاحظات

تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مشكلة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية من خلال النقر على زر النجمة.

إنشاء مشكلة جديدة

يُرجى الاطّلاع على مستندات Issue Tracker للحصول على مزيد من المعلومات.

الإصدار 1.4

الإصدار 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 هذه التعديلات.

تغييرات واجهة برمجة التطبيقات

  • تمّت إضافة دعم مدمج للأنواع التي يمكن أن تقبل القيم الفارغة في SavedStateRegistryOwner.saved، لتسهيل حفظ واستعادة الخصائص القابلة لأن تكون فارغة. (Ia632، b/421325690)

الإصدار 1.3

الإصدار 1.3.1

‫16 يوليو 2025

تم طرح androidx.savedstate:savedstate-*:1.3.1. يتضمّن الإصدار 1.3.1 على هذه التعديلات.

إصلاح الأخطاء

  • تمّت إضافة جميع أهداف KMP المدعومة بواسطة التعليقات التوضيحية إلى عناصر SavedState.
  • تمّت إضافة أهداف جديدة من Kotlin Multiplatform (KMP) إلى عناصر SavedState. يتوافق SavedState الآن مع الأنظمة الأساسية التالية بشكلٍ كامل: JVM (Android وDesktop)، وNative (Linux وiOS وwatchOS وmacOS وMinGW)، والويب (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 إلى وحدة savedstate-compose الجديدة حتى يمكن استخدام واجهات برمجة التطبيقات المساعدة المستندة إلى Compose خارج واجهة مستخدم Compose. يجب استخدام هذا الخيار دائمًا عند استخدام Compose UI 1.9.0-alpha02 والإصدارات الأحدث، ولكنّه متوافق مع الإصدارات القديمة بحيث يمكن استخدامه مع جميع إصدارات Compose.
  • تم الآن نقل إضافات Kotlin الخاصة بـ savedstate-ktx إلى وحدة savedstate الأساسية.
  • يمكن الآن حلّ مثيلات SavedStateRegistryOwner التي تم استردادها عبر findViewTreeSavedStateRegistryOwner من خلال العناصر الرئيسية المنفصلة للواجهة، مثل ViewOverlay. لمزيد من المعلومات عن عناصر العرض المنفصلة الرئيسية، يُرجى الاطّلاع على ملاحظات الإصدار الأساسية أو المستندات في ViewTree.setViewTreeDisjointParent.

Kotlin Multiplatform

  • أصبحت وحدة SavedState متوافقة الآن مع KMP. تشمل الأنظمة الأساسية المتوافقة الآن Android وiOS وLinux وMac وبيئات سطح المكتب المستندة إلى JVM.
  • تم تقديم نوع SavedState كمجرّد (opaque type) لتوفير طريقة موحّدة لحفظ واستعادة حالة التطبيق في KMP. يشمل ذلك SavedStateReader وSavedStateWriter لتعديل الحالة المراد حفظها. على Android، يُعتبر SavedState مرادفًا لـ Bundle، لضمان التوافق الثنائي وتسهيل نقل واجهات برمجة التطبيقات الحالية إلى مصدر مشترك. على الأنظمة الأخرى، يكون 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 ويمكن استخدامه من خلال أي واجهة برمجة تطبيقات تقبل 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 يتم تفعيلها عند الحاجة، ولن تستدعي 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 تمت إضافته في Lifecycle 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 وتتطلّب الإصدار 2.0.0 أو إصدارًا أحدث من KGP. (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)

تغييرات واجهة برمجة التطبيقات

  • تمّت إزالة getOrElse من SavedStateReader واستخدام getOrNull() ?: else() بدلاً منه. (I87317، b/399820614)
  • تمّت إزالة المبدّل inline من الدالتين SavedStateReader وSavedStateWriter. (If2a02، b/399820614)
  • تمّت إزالة التسلسلات المدمجة الخاصة بنظام التشغيل Android لقائمتَي List وArray من واجهة برمجة التطبيقات العامة (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)

تغييرات واجهة برمجة التطبيقات

  • إضافة المَعلمة SavedStateConfig إلى مفوَّضي saved() (I39b3a)
  • جعل أجهزة التسلسل المضمّنة كائنات فردية (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، ما يتيح لك استخدام واجهات برمجة تطبيقات تسلسل SavedState مع MutableState في Compose (I4f690، b/378895074)

تغييرات واجهة برمجة التطبيقات

  • إضافة دالة مصنع لإنشاء 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)

تغييرات واجهة برمجة التطبيقات

  • استبدال دوال تفويض 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 هذه التعديلات.

الميزات الجديدة

  • يتوافق إطار عمل KMP الآن مع: IBinder وSize وSizeF وArray<Parcelable> وSparseArray<Parcelable> وSerializable (على Android).SavedState (I1ba94، b/334076622)
  • إضافة مثيلات KSerializer التي يمكن استخدامها لترميز/فك ترميز أنواع Java وAndroid المدعومة في Bundle من خلال وسم الحقل المعني في فئتك بـ @Serializable(with = ParcelableSerializer::class). (I8c10f وI28caf وb/376026712)
  • يمكن الآن حلّ مثيلات SavedStateRegistryOwner التي تم استردادها عبر findViewTreeSavedStateRegistryOwner من خلال العناصر الرئيسية المنفصلة للواجهة، مثل ViewOverlay. لمزيد من المعلومات عن عناصر العرض المنفصلة الرئيسية، يُرجى الاطّلاع على ملاحظات الإصدار الأساسية أو المستندات في ViewTree.setViewTreeDisjointParent. (Iccb33)

تغييرات واجهة برمجة التطبيقات

  • جعل التسميات وتنظيم الحِزم أكثر اتساقًا مع 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 ويمكن استخدامه من خلال أي واجهة برمجة تطبيقات تقبل 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 يتم تفعيلها عند الحاجة، ولن تستدعي 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 تمت إضافته في Lifecycle 2.9.0-alpha07.

تغييرات واجهة برمجة التطبيقات

  • تمّت إضافة 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 هذه التعديلات

تغييرات واجهة برمجة التطبيقات

  • أصبحت مكتبة 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 كطبقة تجريدية لتوفير طريقة متسقة لحفظ حالة التطبيق واستعادتها في KMP يشمل ذلك SavedStateReader وSavedStateWriter لتعديل الحالة المراد حفظها. على Android، يُعتبر SavedState مرادفًا لـ Bundle، لضمان التوافق الثنائي وتسهيل نقل واجهات برمجة التطبيقات الحالية إلى مصدر مشترك. على الأنظمة الأخرى، يكون 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")
  }

تغييرات واجهة برمجة التطبيقات

  • أصبح كل من 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 هذه التعديلات.

تغييرات واجهة برمجة التطبيقات

  • تم الآن نقل إضافات Kotlin الخاصة بـ savedstate-ktx إلى وحدة 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 لضبط المالك الذي تم ضبطه سابقًا والعثور عليه. يحلّ هذا الإصدار محلّ واجهة برمجة التطبيقات 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 لتوضيح المسؤوليات والعقد الذي يلتزم به المالك بشأن كيفية تنفيذ الواجهة أو الوقت الذي يجب فيه استدعاء الطرق في 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 هذه التعديلات.

تغييرات واجهة برمجة التطبيقات

  • تمت إعادة كتابة الفئتين SavedStateRegistry وViewTreeSavedStateRegistryOwner بلغة Kotlin. بالنسبة إلى ViewTreeSavedStateRegistryOwner، هذا تغيير غير متوافق مع المصدر للفئات المكتوبة بلغة Kotlin، ويجب الآن استيراد طرق إضافة Kotlin مباشرةً واستخدامها في View من androidx.savedstate.setViewTreeSavedStateRegistryOwner وandroidx.savedstate.findViewTreeSavedStateRegistryOwner لضبط المالك الذي تم ضبطه سابقًا والعثور عليه. يحلّ هذا الإصدار محلّ واجهة برمجة التطبيقات 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)

تغييرات واجهة برمجة التطبيقات

  • تمت إعادة كتابة الفئات 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 يحفظ حزمة 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: تتيح لك واجهة برمجة التطبيقات الجديدة ViewTreeSavedStateRegistryOwner.get(View) استرداد SavedStateRegistry الذي يحتوي على View معيّن. يجب الترقية إلى Activity 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 هذه التعديلات.

الميزات الجديدة

  • تتيح لك واجهة برمجة التطبيقات الجديدة 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. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.

الميزات الرئيسية للإصدار 1.0.0 من SavedState

تمت ترقية androidx.savedstate إلى إصدار ثابت. هذه مجموعة من واجهات برمجة التطبيقات التي تتيح للمطوّرين إدخال مكوّنات في عملية الاستعادة / saveInstanceState. نقطة الدخول الرئيسية إلى واجهة برمجة التطبيقات هي SavedStateRegistry، والتي توفّر طريقة لاسترداد الحالات المحفوظة سابقًا باستخدام consumeRestoredStateForKey وتسجيل دالة رد نداء في 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 بين العنصرين androidx.savedstate:savedstate-bundle وandroidx.savedstate:savedstate-common في حزمة واحد، لأنّه تم اتخاذ قرار بتبسيط البنية الأساسية لـ SavedState وإزالة الأنواع العامة من SavedStateRegistry. وبالتالي، لا حاجة إلى وحدات منفصلة.

يمكنك الاطّلاع على القائمة الكاملة للتعديلات في هذا الإصدار هنا.

الميزات الجديدة

  • تمت إضافة SavedStateRegistry.runOnNextRecreaction(Class<? extends AutoRecreated> clazz ). سيتم إنشاء مثيل للفئة المحدّدة وسيتم تنفيذ الطريقة AutoRecreated.onRecreated عند إعادة تشغيل المكوّن المالك.

تغييرات واجهة برمجة التطبيقات

  • تمت إزالة الأنواع العامة من SavedStateRegistry<T>
  • تمت إزالة AbstractSavedStateRegistry وBundlableSavedStateRegistry، يُرجى استخدام SavedStateRegistry البسيط بدلاً من ذلك
  • تمت إعادة تسمية BundleSavedStateRegistryOwner إلى SavedStateRegistryOwner

الإصدار 1.0.0-alpha01

‫17 كانون الأول (ديسمبر) 2018

هذا هو الإصدار الأول من SavedState.

الميزات الجديدة

androidx.savedstate هي مجموعة جديدة من واجهات برمجة التطبيقات في مرحلة الإصدار الأوّلي تتيح للمطوّرين إضافة مكوّنات إلى عملية الاستعادة / saveInstanceState. نقطة الدخول الرئيسية إلى واجهة برمجة التطبيقات هي SavedStateRegistry<T>، والتي توفّر طريقة لاسترداد الحالة المحفوظة سابقًا من خلال consumeRestoredStateForKey وتسجيل دالة رد نداء في registerSavedStateProvider لتوفير الحالة المحفوظة عند طلب النظام لها.