Savedstate

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

تعريف التبعيات

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

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

رائع

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

الإصدار 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.
  • تم الآن نقل savedstate-ktx إضافات Kotlin إلى وحدة base savedstate الأساسية.
  • يمكن الآن حلّ مثيلات SavedStateRegistryOwner التي تم استردادها من خلال findViewTreeSavedStateRegistryOwner من خلال العناصر الرئيسية المنفصلة لعرض، مثل ViewOverlay. لمزيد من المعلومات عن عناصر العرض المنفصلة الرئيسية، يُرجى الاطّلاع على ملاحظات الإصدار الأساسية أو المستندات في ViewTree.setViewTreeDisjointParent.

Kotlin Multiplatform

  • أصبحت وحدة SavedState متوافقة الآن مع KMP. تشمل الأنظمة الأساسية المتوافقة الآن Android وiOS وLinux وMac وبيئات سطح المكتب المستندة إلى JVM.
  • تقديم النوع غير الشفاف SavedState كطبقة تجريدية لتوفير طريقة متسقة لحفظ حالة التطبيق واستعادتها في 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 على عمليات الدمج هذه.

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

  • يتوافق إطار عمل SavedState KMP الآن مع: IBinder وSize وSizeF وArray<Parcelable> وSparseArray<Parcelable> وSerializable (على Android). (I1ba94، b/334076622)
  • أضِف مثيلات KSerializer التي يمكن استخدامها لترميز/فك ترميز أنواع Java وAndroid المتوافقة مع "الحزمة" من خلال وضع علامة @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 على عمليات الدمج هذه.

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

  • تم الآن نقل savedstate-ktx إضافات Kotlin إلى وحدة base 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 يحفظ حزمة فارغة إذا لم تكن هناك حالة لحفظها.

الإصدار 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 يحفظ حزمة فارغة إذا لم تكن هناك حالة لحفظها. (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 لتوفير الحالة المحفوظة عند طلب النظام لها.