Savedstate

مؤلفه‌های قابل اتصال را بنویسید که حالت رابط کاربری را در هنگام از بین رفتن یک فرآیند ذخیره می‌کنند، و با شروع مجدد فرآیند، آن را بازیابی می‌کنند.
آخرین به روز رسانی انتشار پایدار کاندید را آزاد کنید نسخه بتا انتشار آلفا
13 نوامبر 2024 1.2.1 - - 1.3.0-alpha05

اعلام وابستگی ها

برای افزودن وابستگی به SavedState، باید مخزن Google Maven را به پروژه خود اضافه کنید. برای اطلاعات بیشتر، مخزن Maven Google را بخوانید.

وابستگی‌های مصنوعات مورد نیاز خود را در فایل build.gradle برای برنامه یا ماژول خود اضافه کنید:

شیار

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

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

کاتلین

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 در Lifecycle 2.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 ها است.

به روز رسانی های وابستگی

نسخه 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 of androidx.savedstate.setViewTreeSavedStateRegistryOwner و androidx.savedstate.findViewTreeSavedStateRegistryOwner . این جایگزین 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 حاوی این 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 of androidx.savedstate.setViewTreeSavedStateRegistryOwner و androidx.savedstate.findViewTreeSavedStateRegistryOwner . این جایگزین API savedstate-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 را بازیابی کنید. شما باید به 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 حاوی این 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 را بازیابی کنید. شما باید به 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 منتشر شد. 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 پس از درخواست سیستم ارائه می دهد.