Savedstate
آخرین به روز رسانی | انتشار پایدار | کاندید را آزاد کنید | نسخه بتا | انتشار آلفا |
---|---|---|---|---|
13 نوامبر 2024 | 1.2.1 | - | - | 1.3.0-alpha05 |
اعلام وابستگی ها
برای افزودن وابستگی به 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") }
برای اطلاعات بیشتر درباره وابستگیها، به افزودن وابستگیهای ساخت نگاه کنید.
بازخورد
بازخورد شما به بهتر شدن Jetpack کمک می کند. اگر مسائل جدیدی کشف کردید یا ایده هایی برای بهبود این کتابخانه دارید، به ما اطلاع دهید. لطفاً قبل از ایجاد کتابخانه جدید، به مسائل موجود در این کتابخانه نگاهی بیندازید. با کلیک کردن روی دکمه ستاره می توانید رای خود را به یک موضوع موجود اضافه کنید.
برای اطلاعات بیشتر به مستندات ردیاب مشکل مراجعه کنید.
نسخه 1.3
نسخه 1.3.0-alpha05
13 نوامبر 2024
androidx.savedstate:savedstate-*:1.3.0-alpha05
منتشر شد. نسخه 1.3.0-alpha05 حاوی این تعهدات است.
پشتیبانی از سریال سازی KotlinX
SavedState
در حال حاضر شامل پشتیبانی KotlinX Serialization است. با استفاده از روشهایencodeToSavedState
وdecodeFromSavedState
میتوانید یک کلاس حاشیهنویسی شده با@Serializable
را بهSavedState
تبدیل کنید.SavedState
برگردانده شده یکBundle
معمولی در Android است و می تواند توسط هر API که یک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
تنبل است و تا زمانی که به آن دسترسی پیدا نشود،init
lambda را صدا نمی کند یا چیزی را در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
اضافه شده است.
تغییرات 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 حاوی این commit ها است.
تغییرات 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 حاوی این commit ها است.
چند پلتفرم کاتلین
- ماژول
SavedState
اکنون با KMP سازگار است. پلتفرم های پشتیبانی شده اکنون شامل اندروید، iOS، لینوکس، مک و محیط های دسکتاپ JVM هستند. ( I26305 , b/334076622 )
ویژگی های جدید
- نوع مات
SavedState
را به عنوان یک انتزاع معرفی کنید تا راهی ثابت برای ذخیره و بازیابی حالت برنامه در KMP ارائه شود. این شاملSavedStateReader
وSavedStateWriter
برای تغییر وضعیت ذخیره می شود. در اندروید،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 حاوی این commit ها است.
به روز رسانی های وابستگی
-
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 حاوی این commit ها است.
تغییرات مهم از 1.1.0
-
SavedStateRegistryController
اکنون امکان پیوست اولیهSavedStateRegistry
را از طریقperformAttach()
می دهد. - اکنون می توانید
SavedStateProvider
ثبت شده قبلی را ازSavedStateRegistry
از طریقgetSavedStateProvider()
بازیابی کنید. - کتابخانه
SavedState
در Kotlin بازنویسی شده است.- برای
SavedStateRegistryOwner
، این یک تغییر منبع ناسازگار برای کلاس های نوشته شده در Kotlin است - اکنون باید به جای اجرای تابعgetSavedStateRegistry()
قبلی، ویژگیsavedStateRegistry
را لغو کنید. - برای
ViewTreeSavedStateRegistryOwner
، این یک تغییر منبع ناسازگار برای کلاسهایی است که در Kotlin نوشته شدهاند - اکنون باید مستقیماً روشهای پسوند Kotlin را درView
ofandroidx.savedstate.setViewTreeSavedStateRegistryOwner
وandroidx.savedstate.findViewTreeSavedStateRegistryOwner
. این جایگزین APIsavedstate-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 حاوی این commit ها است.
تغییرات اسناد و مدارک
-
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 حاوی این تعهدات است.
تغییرات API
- کلاس های
SavedStateRegistry
وViewTreeSavedStateRegistryOwner
در Kotlin بازنویسی شده اند. برایViewTreeSavedStateRegistryOwner
، این یک تغییر منبع ناسازگار برای کلاسهایی است که در Kotlin نوشته شدهاند - اکنون باید مستقیماً روشهای پسوند Kotlin را درView
ofandroidx.savedstate.setViewTreeSavedStateRegistryOwner
وandroidx.savedstate.findViewTreeSavedStateRegistryOwner
. این جایگزین APIsavedstate-ktx
findViewTreeSavedStateRegistryOwner
می شود. این باینری سازگار است و برای پیاده سازی های نوشته شده در زبان برنامه نویسی جاوا سازگار با منبع باقی می ماند. ( 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 حاوی این commit ها است.
ویژگی های جدید
- اکنون می توانید
SavedStateProvider
ثبت شده قبلی را ازSavedStateRegistry
از طریقgetSavedStateProvider()
بازیابی کنید. ( I7ea47 , b/215406268 )
تغییرات API
- کلاس های
SavedStateRegistryOwner
،SavedStateRegistryController
وRecreator
در Kotlin بازنویسی شده اند. برایSavedStateRegistryOwner
، این یک تغییر منبع ناسازگار برای کلاس های نوشته شده در Kotlin است - اکنون باید به جای اجرای تابعgetSavedStateRegistry()
قبلی، ویژگیsavedStateRegistry
را لغو کنید. این باینری سازگار و منبع سازگار برای پیاده سازی های نوشته شده در زبان برنامه نویسی جاوا است. ( 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 حاوی این commit ها است.
ویژگی های جدید
-
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 حاوی این commit ها است.
تغییرات عمده از 1.0.0
-
ViewTreeSavedStateRegistryOwner
API : یکViewTreeSavedStateRegistryOwner.get(View)
API جدید به شما امکان می دهد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 حاوی این commit ها است.
نسخه 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 حاوی این commit ها است.
ویژگی های جدید
- یک
ViewTreeSavedStateRegistryOwner.get(View)
API جدید به شما امکان می دهد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
منتشر شد. commit های موجود در این نسخه را می توانید در اینجا بیابید.
ویژگی های اصلی SavedState 1.0.0
androidx.savedstate
به یک نسخه پایدار فارغ التحصیل شد. این مجموعه ای از API ها است که به توسعه دهندگان اجازه می دهد تا اجزای خود را به فرآیند restore / saveInstanceState اضافه کنند. نقطه ورود اصلی API SavedStateRegistry
است که راهی برای بازیابی حالت های ذخیره شده قبلی با استفاده از consumeRestoredStateForKey
و ثبت یک تماس برگشتی به registerSavedStateProvider
برای ارائه وضعیت ذخیره شده پس از درخواست سیستم ارائه می دهد.
نسخه 1.0.0-rc01
2 جولای 2019
androidx.savedstate:savedstate:1.0.0-rc01
منتشر شد. commit های موجود در این نسخه را می توانید در اینجا بیابید.
رفع اشکال
- اصلاح قانون محافظ نادرست ( b/132655499 )
نسخه 1.0.0-beta01
7 مه 2019
androidx.savedstate:savedstate:1.0.0-beta01
منتشر شد. commit های موجود در این نسخه را می توانید در اینجا بیابید.
نسخه 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
حذف شوند. بنابراین، نیازی به ماژول های جداگانه نیست.
لیست کامل 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های آلفا است که به توسعه دهندگان این امکان را می دهد تا اجزای سازنده را به فرآیند restore / saveInstanceState اضافه کنند. نقطه ورود اصلی API SavedStateRegistry<T>
است که راهی برای بازیابی وضعیت ذخیره شده قبلی از طریق consumeRestoredStateForKey
و ثبت یک تماس برگشتی به registerSavedStateProvider
برای ارائه یک Savedstate پس از درخواست سیستم ارائه می دهد.