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 UI1.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
تمت إضافته في Lifecycle2.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
تمت إضافته في Lifecycle2.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 هذه التعديلات.
تحديثات الاعتماديات
- يعتمد
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
لضبط المالك الذي تم ضبطه سابقًا والعثور عليه. يحلّ هذا الإصدار محلّ واجهة برمجة التطبيقات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
معيّن. يجب الترقية إلى 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 هذه التعديلات.
الميزات الجديدة
- تتيح لك واجهة برمجة التطبيقات الجديدة
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
. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.
الميزات الرئيسية للإصدار 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
لتوفير الحالة المحفوظة عند طلب النظام لها.