ذخیره شده

کامپوننت‌های قابل اتصالی بنویسید که وضعیت رابط کاربری را هنگام از کار افتادن یک فرآیند ذخیره کنند و هنگام راه‌اندازی مجدد فرآیند، آن را بازیابی کنند.
آخرین به‌روزرسانی انتشار پایدار کاندیدای انتشار انتشار بتا انتشار آلفا
۵ نوامبر ۲۰۲۵ ۱.۴.۰ - - -

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

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

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

شیار

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

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

کاتلین

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

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

برای اطلاعات بیشتر در مورد وابستگی‌ها، به «افزودن وابستگی‌های ساخت» مراجعه کنید.

بازخورد

بازخورد شما به بهبود Jetpack کمک می‌کند. اگر مشکلات جدیدی کشف کردید یا ایده‌هایی برای بهبود این کتابخانه دارید، به ما اطلاع دهید. لطفاً قبل از ایجاد یک کتابخانه جدید، نگاهی به مشکلات موجود در این کتابخانه بیندازید. می‌توانید با کلیک بر روی دکمه ستاره، رأی خود را به یک مشکل موجود اضافه کنید.

ایجاد یک مسئله جدید

برای اطلاعات بیشتر به مستندات ردیاب مشکل مراجعه کنید.

نسخه ۱.۴

نسخه ۱.۴.۰

۵ نوامبر ۲۰۲۵

androidx.savedstate:savedstate-*:1.4.0 منتشر شد. نسخه ۱.۴.۰ شامل این کامیت‌ها است.

نسخه ۱.۴.۰-rc01

۲۲ اکتبر ۲۰۲۵

androidx.savedstate:savedstate-*:1.4.0-rc01 بدون هیچ تغییری از زمان انتشار نسخه ۱.۴.۰-beta01 منتشر شده است. نسخه ۱.۴.۰-rc01 شامل این کامیت‌ها است.

نسخه ۱.۴.۰-بتا۰۱

۸ اکتبر ۲۰۲۵

androidx.savedstate:savedstate-*:1.4.0-beta01 بدون هیچ تغییر قابل توجهی از آخرین نسخه آلفا منتشر شده است. نسخه 1.4.0-beta01 شامل این کامیت‌ها است.

نسخه ۱.۴.۰-آلفا۰۳

۲۷ آگوست ۲۰۲۵

androidx.savedstate:savedstate-*:1.4.0-alpha03 منتشر شد. نسخه 1.4.0-alpha03 شامل این کامیت‌ها است.

تغییرات API

  • پشتیبانی از انواع تهی‌پذیر (nullable) در encodeToSavedState و decodeFromSavedState اضافه شد. ( I79062 ، b/439527454 )
  • به‌روزرسانی Compose به نسخه ۱.۹.۰ ( I2b9de )

نسخه ۱.۴.۰-آلفا۰۲

۱۳ آگوست ۲۰۲۵

androidx.savedstate:savedstate-*:1.4.0-alpha02 منتشر شد. نسخه 1.4.0-alpha02 شامل این کامیت‌ها است.

نسخه ۱.۴.۰-آلفا۰۱

۳۰ ژوئیه ۲۰۲۵

androidx.savedstate:savedstate-*:1.4.0-alpha01 منتشر شد. نسخه 1.4.0-alpha01 شامل این کامیت‌ها است.

تغییرات API

  • پشتیبانی بومی برای انواع تهی‌پذیر در SavedStateRegistryOwner.saved اضافه شد که ذخیره و بازیابی ویژگی‌های تهی‌پذیر را ساده می‌کند. ( Ia632 ، b/421325690 )

نسخه ۱.۳

نسخه ۱.۳.۳

۱۷ سپتامبر ۲۰۲۵

androidx.savedstate:savedstate-*:1.3.3 منتشر شد. نسخه ۱.۳.۳ شامل این کامیت‌ها است.

رفع اشکالات

  • خطایی که باعث می‌شد افزونه Compose Compiler اعمال نشود و باعث خرابی مصنوعات SavedState KMP شود، برطرف شد. ( Id2290 ، b/443965665 )

نسخه ۱.۳.۲

۲۷ آگوست ۲۰۲۵

androidx.savedstate:savedstate-*:1.3.2 منتشر شد. نسخه ۱.۳.۲ شامل این کامیت‌ها است.

ویژگی‌های جدید

  • اهداف جدید Kotlin Multiplatform (KMP) را به مصنوع SavedState *-compose اضافه کنید. Lifecycle اکنون در مجموع از پلتفرم‌های زیر پشتیبانی می‌کند: JVM (اندروید و دسکتاپ)، Native (لینوکس، iOS، watchOS، macOS، MinGW) و وب (جاوااسکریپت، WasmJS). ( /Idcf26 )

نسخه ۱.۳.۱

۱۶ ژوئیه ۲۰۲۵

androidx.savedstate:savedstate-*:1.3.1 منتشر شد. نسخه ۱.۳.۱ شامل این کامیت‌ها است.

رفع اشکالات

  • تمام اهداف KMP پشتیبانی شده توسط حاشیه‌نویسی‌ها را به مصنوعات SavedState اضافه کنید.
  • اهداف جدید Kotlin Multiplatform (KMP) به مصنوعات SavedState اضافه شد. SavedState اکنون در مجموع از پلتفرم‌های زیر پشتیبانی می‌کند: JVM (اندروید و دسکتاپ)، Native (لینوکس، iOS، watchOS، macOS، MinGW) و وب (جاوااسکریپت، WasmJS). توجه داشته باشید که هیچ هدف KMP جدیدی به مصنوعات *-compose اضافه نشده است، زیرا این امر به انتشار پایدار Compose 1.9 بستگی دارد. ( I062f4 ).

نسخه ۱.۳.۰

۷ مه ۲۰۲۵

androidx.savedstate:savedstate-*:1.3.0 منتشر شد. نسخه ۱.۳.۰ شامل این کامیت‌ها است.

تغییرات مهم از زمان ۱.۲.۰

  • LocalSavedStateRegistryOwner از Compose UI به ماژول جدید savedstate-compose منتقل شده است تا APIهای کمکی مبتنی بر Compose آن بتوانند خارج از Compose UI نیز استفاده شوند. این ماژول باید همیشه هنگام استفاده از Compose UI 1.9.0-alpha02 و بالاتر استفاده شود، اما با نسخه‌های قبلی سازگار است به طوری که می‌توان از آن با تمام نسخه‌های Compose استفاده کرد.
  • افزونه‌های کاتلین savedstate-ktx اکنون به ماژول پایه savedstate منتقل شده‌اند.
  • نمونه‌های SavedStateRegistryOwner که از طریق findViewTreeSavedStateRegistryOwner بازیابی می‌شوند، اکنون می‌توانند از طریق والدهای مجزای یک نما، مانند ViewOverlay ، حل شوند. برای اطلاعات بیشتر در مورد والدهای مجزای نما، به یادداشت‌های انتشار core یا مستندات موجود در ViewTree.setViewTreeDisjointParent مراجعه کنید.

کاتلین چندسکویی

  • ماژول SavedState اکنون با KMP سازگار است. پلتفرم‌های پشتیبانی‌شده اکنون شامل اندروید، iOS، لینوکس، مک و محیط‌های دسکتاپ JVM هستند.
  • نوع داده‌ی غیرشفاف SavedState به عنوان یک انتزاع معرفی کنید تا روشی سازگار برای ذخیره و بازیابی وضعیت برنامه در KMP فراهم شود. این شامل یک SavedStateReader و SavedStateWriter برای تغییر وضعیتی است که باید ذخیره شود. در اندروید، SavedState یک نام مستعار برای Bundle است که سازگاری دودویی را تضمین می‌کند و مهاجرت APIهای موجود به یک مجموعه منبع مشترک را تسهیل می‌کند. در سایر پلتفرم‌ها، 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

  • SavedState اکنون از پشتیبانی KotlinX Serialization پشتیبانی می‌کند. می‌توانید یک کلاس که با @Serializable حاشیه‌نویسی شده است را با استفاده از متدهای encodeToSavedState و decodeFromSavedState به یک SavedState تبدیل کنید. SavedState برگردانده شده یک Bundle معمولی در اندروید است و می‌تواند توسط هر API که 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 ، یک نماینده‌ی ویژگی lazy، را گنجانده‌ایم تا ذخیره‌ی کلاس‌های @Serializable در یک SavedStateRegistryOwner (مثلاً ComponentActivity ، Fragment و غیره) را آسان کنیم و این کلاس‌ها را به طور خودکار در طول مرگ و بازسازی فرآیند بازیابی کنیم. لطفاً توجه داشته باشید که نماینده‌ی saved تنبل است و تا زمانی که به آن دسترسی پیدا نشود، لامبدا 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 اضافه شده است.

نسخه ۱.۳.۰-rc01

۲۳ آوریل ۲۰۲۵

androidx.savedstate:savedstate-*:1.3.0-rc01 منتشر شد. نسخه 1.3.0-rc01 شامل این کامیت‌ها است.

نسخه ۱.۳.۰-بتا۰۱

۹ آوریل ۲۰۲۵

androidx.savedstate:savedstate-*:1.3.0-beta01 منتشر شد. نسخه 1.3.0-beta01 شامل این کامیت‌ها است.

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

  • این کتابخانه اکنون سطح زبان Kotlin 2.0 را هدف قرار می‌دهد و به KGP 2.0.0 یا جدیدتر نیاز دارد. ( Idb6b5 )

نسخه ۱.۳.۰-آلفا۱۱

۲۶ مارس ۲۰۲۵

androidx.savedstate:savedstate-*:1.3.0-alpha11 بدون هیچ تغییر عمومی قابل توجهی منتشر شده است. نسخه 1.3.0-alpha11 شامل این کامیت‌ها است.

نسخه ۱.۳.۰-آلفا۱۰

۱۲ مارس ۲۰۲۵

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 )

تغییرات API

  • تابع getOrElse از SavedStateReader حذف کنید و از getOrNull() ?: else() کنید. ( I87317 , b/399820614 )
  • اصلاحگر inline را از متدهای SavedStateReader و SavedStateWriter حذف کنید. ( If2a02 , b/399820614 )
  • حذف سریالایزرهای لیست و آرایه داخلی مخصوص اندروید از API عمومی ( Ida293 )
  • جایگزینی SparseParcelableArraySerializer با SparseArraySerializer ( I91de8 )
  • با پرتاب کردن (throwing) در مواقعی که نوع مقدار با نوع بازگشتی مطابقت ندارد، باعث شوید که همه SavedStateReader.get به طور مداوم رفتار کنند ( I78c4a ، b/399317598 ).
  • نام SavedState*Delegates را به SavedState*Delegate تغییر دهید. ( I8589b ، b/399629301 )
  • نام SavedStateConfig را به SavedStateConfiguration تغییر دهید. ( I043a5 ، b/399629301 )

نسخه ۱.۳.۰-آلفا۰۹

۲۶ فوریه ۲۰۲۵

androidx.savedstate:savedstate-*:1.3.0-alpha09 منتشر شد. نسخه 1.3.0-alpha09 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • برای انواع داخلی، قابلیت بازگشت به عقب اضافه کنید و اطمینان حاصل کنید که همه انواع پشتیبانی شده توسط Bundle می‌توانند به طور پیش‌فرض با encodeAsSavedState / decodeFromSavedState یا برای ویژگی‌های کلاس‌های @Serializable ، از طریق حاشیه‌نویسی @Contextual استفاده شوند. ( Ic01d2 )
  • پشتیبانی از classDiscriminator و classDiscriminatorMode را روی SavedStateConfig لحاظ کنید. ( I69b66 , b/395104517 )

تغییرات API

  • پارامتر SavedStateConfig را به delegate های saved() اضافه کنید ( I39b3a )
  • اشیاء سینگلتون سریالایزر داخلی می‌سازد ( Ifeee4 )
  • ویژگی‌های SavedStateConfig اکنون عمومی هستند و به ماژول‌های دیگر امکان می‌دهند از این پیکربندی‌ها استفاده کنند. ( Ie5f49 , b/378897438 )
  • پشتیبانی از @Serializer(with = ...) برای MutableStateFlowSerializer و MutableStateSerializer ( I90953 )
  • افزودن contentDeepToString به SavedStateReader ( I14d10 )

نسخه ۱.۳.۰-آلفا۰۸

۱۲ فوریه ۲۰۲۵

androidx.savedstate:savedstate-*:1.3.0-alpha08 منتشر شد. نسخه 1.3.0-alpha08 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • MutableStateSerializer از lifecycle-viewmodel-compose به savedstate-compose منتقل کنید، که به شما امکان می‌دهد از APIهای سریال‌سازی SavedState با MutableState مربوط به Compose استفاده کنید. ( I4f690 ، b/378895074 )

تغییرات API

  • یک تابع factory برای ایجاد SavedState از یک SavedState موجود اضافه کنید. ( I39f9a )
  • پشتیبانی از Array<SavedState> و List<SavedState> در androidx.savedstate اضافه می‌کند. ( Idd8a5 )
  • پارامتر اختیاری SavedStateConfig را به رمزگذاری/رمزگشایی SavedState اضافه کنید ( I6c4c0 )

نسخه ۱.۳.۰-آلفا۰۷

۲۹ ژانویه ۲۰۲۵

androidx.savedstate:savedstate-*:1.3.0-alpha07 منتشر شد. نسخه 1.3.0-alpha07 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • برای سریال‌سازی kotlinx.coroutines.flow.MutableStateFlow ، MutableStateFlowSerializer اضافه کنید. ( I6a892 ، b/378895070 )

تغییرات API

  • توابع نماینده‌ی SavedStateRegistryOwner.saved() که سربارگذاری شده‌اند را با پارامترهای پیش‌فرض ( Icd1c1 ) جایگزین کنید.
  • JavaSerializableSerializer و ParcelableSerializer را انتزاعی ( I268f6 ) کنید
  • حذف ژنریک T : CharSequence از CharSequenceSerializer ( Ib40bd )

نسخه ۱.۳.۰-alpha06

۱۱ دسامبر ۲۰۲۴

androidx.savedstate:savedstate-*:1.3.0-alpha06 منتشر شد. نسخه 1.3.0-alpha06 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • SavedState KMP اکنون از موارد زیر پشتیبانی می‌کند: IBinder ، Size ، SizeF ، Array<Parcelable> ، SparseArray<Parcelable> و Serializable (اندروید). ( I1ba94 ، b/334076622 )
  • با علامت‌گذاری فیلد مربوطه در کلاس خود با @Serializable(with = ParcelableSerializer::class) . (I8c10f, I28caf, b/376026712) نمونه‌های KSerializer که می‌توانند برای رمزگذاری/رمزگشایی انواع جاوا و اندروید پشتیبانی شده توسط Bundle استفاده شوند، اضافه کنید. ( I8c10f , I28caf , b/376026712 )
  • نمونه‌های SavedStateRegistryOwner که از طریق findViewTreeSavedStateRegistryOwner بازیابی می‌شوند، اکنون می‌توانند از طریق والدهای مجزای یک نما، مانند ViewOverlay ، حل شوند. برای اطلاعات بیشتر در مورد والدهای مجزای نما، به یادداشت‌های انتشار core یا مستندات موجود در ViewTree.setViewTreeDisjointParent مراجعه کنید. ( Iccb33 )

تغییرات API

  • نامگذاری‌ها و سازماندهی بسته‌ها را با SavedStateRegistryOwnerDelegate ( I8c135 ، b/376026744 ) سازگارتر کنید.

نسخه ۱.۳.۰-آلفا۰۵

۱۳ نوامبر ۲۰۲۴

androidx.savedstate:savedstate-*:1.3.0-alpha05 منتشر شد. نسخه 1.3.0-alpha05 شامل این کامیت‌ها است.

پشتیبانی از سریال‌سازی KotlinX

  • SavedState اکنون از پشتیبانی KotlinX Serialization پشتیبانی می‌کند. می‌توانید یک کلاس حاشیه‌نویسی شده با @Serializable را با استفاده از متدهای encodeToSavedState و decodeFromSavedState به یک SavedState تبدیل کنید. SavedState برگردانده شده یک Bundle معمولی در اندروید است و می‌تواند توسط هر 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 ، یک نماینده‌ی ویژگی lazy، را گنجانده‌ایم تا ذخیره‌ی کلاس‌های @Serializable در یک SavedStateRegistryOwner (مثلاً ComponentActivity ، Fragment و غیره) را آسان کنیم و این کلاس‌ها را به طور خودکار در طول مرگ و بازسازی فرآیند بازیابی کنیم. لطفاً توجه داشته باشید که نماینده‌ی saved lazy است و تا زمانی که به آن دسترسی پیدا نشود، لامبدا 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 اضافه شده است.

تغییرات API

  • toMap به SavedState اضافه کنید، که به هر SavedState اجازه می‌دهد به یک Map معمولی (کپی سطحی) تبدیل شود. ( I487b9 ، b/334076622 )
  • SavedState KMP اکنون از آرایه‌ها پشتیبانی می‌کند. ( Ic0552 ، b/334076622 )

نسخه ۱.۳.۰-آلفا۰۴

۳۰ اکتبر ۲۰۲۴

androidx.savedstate:savedstate-*:1.3.0-alpha04 منتشر شد. نسخه 1.3.0-alpha04 شامل این کامیت‌ها است.

تغییرات API

  • SavedState KMP اکنون از کاراکتر ( 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 )

نسخه ۱.۳.۰-آلفا۰۳

۱۶ اکتبر ۲۰۲۴

androidx.savedstate:savedstate-*:1.3.0-alpha03 بدون هیچ تغییر قابل توجهی منتشر شده است. نسخه 1.3.0-alpha03 شامل این کامیت‌ها است.

نسخه ۱.۳.۰-آلفا۰۲

۲ اکتبر ۲۰۲۴

androidx.savedstate:savedstate-*:1.3.0-alpha02 منتشر شد. نسخه 1.3.0-alpha02 شامل این کامیت‌ها است.

کاتلین چندسکویی

  • ماژول 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 )

نسخه ۱.۳.۰-آلفا۰۱

۷ آگوست ۲۰۲۴

androidx.savedstate:savedstate:1.3.0-alpha01 و androidx.savedstate:savedstate-ktx:1.3.0-alpha01 منتشر شدند. نسخه 1.3.0-alpha01 شامل این کامیت‌ها است.

تغییرات API

  • افزونه‌های کاتلین savedstate-ktx اکنون به ماژول پایه savedstate منتقل شده‌اند. ( I1cc18 ، b/274803094 )

توجه داشته باشید

  • compileSdk به ۳۵ ( 5dc41be ) به‌روزرسانی کنید.

نسخه ۱.۲.۱

نسخه ۱.۲.۱

۲۲ مارس ۲۰۲۳

androidx.savedstate:savedstate:1.2.1 و androidx.savedstate:savedstate-ktx:1.2.1 منتشر شدند. نسخه ۱.۲.۱ شامل این کامیت‌ها است.

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

نسخه ۱.۲.۰

نسخه ۱.۲.۰

۲۹ ژوئن ۲۰۲۲

androidx.savedstate:savedstate:1.2.0 و androidx.savedstate:savedstate-ktx:1.2.0 منتشر شدند. نسخه ۱.۲.۰ شامل این کامیت‌ها است.

تغییرات مهم از زمان ۱.۱.۰

  • SavedStateRegistryController اکنون امکان اتصال زودهنگام SavedStateRegistry را از طریق performAttach() فراهم می‌کند.
  • اکنون می‌توانید با استفاده از تابع getSavedStateProvider() ‎ یک SavedStateProvider که قبلاً ثبت شده است را از یک SavedStateRegistry بازیابی کنید.
  • کتابخانه SavedState در کاتلین بازنویسی شده است.
    • برای SavedStateRegistryOwner ، این یک تغییر ناسازگار با منبع برای کلاس‌هایی است که در کاتلین نوشته شده‌اند - اکنون باید به جای پیاده‌سازی تابع getSavedStateRegistry() قبلی، ویژگی savedStateRegistry را بازنویسی کنید.
    • برای ViewTreeSavedStateRegistryOwner ، این یک تغییر ناسازگار با منبع برای کلاس‌هایی است که در Kotlin نوشته شده‌اند - اکنون باید مستقیماً متدهای افزونه Kotlin را در View مربوط به androidx.savedstate.setViewTreeSavedStateRegistryOwner و androidx.savedstate.findViewTreeSavedStateRegistryOwner وارد کرده و از آنها برای تنظیم و یافتن مالکی که قبلاً تنظیم شده است، استفاده کنید. این جایگزین API savedstate-ktx مربوط به findViewTreeSavedStateRegistryOwner می‌شود.

تغییرات رفتاری

  • اگر هیچ حالتی برای ذخیره وجود نداشته باشد، SavedStateRegistry دیگر یک Bundle خالی ذخیره نمی‌کند.

نسخه ۱.۲.۰-rc01

۱۱ مه ۲۰۲۲

androidx.savedstate:savedstate:1.2.0-rc01 و androidx.savedstate:savedstate-ktx:1.2.0-rc01 منتشر شدند. نسخه 1.2.0-rc01 شامل این کامیت‌ها است.

تغییرات مستندات

  • اسناد K SavedStateRegistryOwner به‌روزرسانی شده‌اند تا مسئولیت‌ها و قراردادهایی که مالک در مورد نحوه پیاده‌سازی رابط یا زمان فراخوانی متدها در SavedStateRegistryController دارد، روشن شود. ( Iefc95 ، b/228887344 )

نسخه ۱.۲.۰-بتا۰۱

۲۰ آوریل ۲۰۲۲

androidx.savedstate:savedstate:1.2.0-beta01 و androidx.savedstate:savedstate-ktx:1.2.0-beta01 منتشر شدند. نسخه 1.2.0-beta01 شامل این کامیت‌ها است.

تغییرات API

  • کلاس‌های SavedStateRegistry و ViewTreeSavedStateRegistryOwner در کاتلین بازنویسی شده‌اند. برای ViewTreeSavedStateRegistryOwner ، این یک تغییر ناسازگار با منبع برای کلاس‌هایی است که در کاتلین نوشته شده‌اند - اکنون باید مستقیماً متدهای افزونه کاتلین را در View مربوط به androidx.savedstate.setViewTreeSavedStateRegistryOwner و androidx.savedstate.findViewTreeSavedStateRegistryOwner وارد کرده و از آنها برای تنظیم و یافتن مالکی که قبلاً تنظیم شده است، استفاده کنید. این جایگزین API savedstate-ktx مربوط به findViewTreeSavedStateRegistryOwner می‌شود. این API با باینری سازگار است و برای پیاده‌سازی‌های نوشته شده به زبان برنامه‌نویسی جاوا، سازگار با منبع باقی می‌ماند. ( b/220191285 )

نسخه ۱.۲.۰-آلفا۰۲

۶ آوریل ۲۰۲۲

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 )

تغییرات API

  • کلاس‌های SavedStateRegistryOwner ، SavedStateRegistryController و Recreator در کاتلین بازنویسی شده‌اند. برای SavedStateRegistryOwner ، این یک تغییر ناسازگار با منبع برای آن دسته از کلاس‌هایی است که در کاتلین نوشته شده‌اند - اکنون باید به جای پیاده‌سازی تابع getSavedStateRegistry() قبلی، ویژگی savedStateRegistry را بازنویسی کنید. این با پیاده‌سازی‌های نوشته شده به زبان برنامه‌نویسی جاوا سازگار با باینری و منبع است. ( b/220191285 )

نسخه ۱.۲.۰-آلفا۰۱

۲۶ ژانویه ۲۰۲۲

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 )

نسخه ۱.۱.۰

نسخه ۱.۱.۰

۱۰ فوریه ۲۰۲۱

androidx.savedstate:savedstate:1.1.0 و androidx.savedstate:savedstate-ktx:1.1.0 منتشر شدند. نسخه ۱.۱.۰ شامل این کامیت‌ها است.

تغییرات عمده از زمان ۱.۰.۰

  • رابط برنامه‌نویسی ViewTreeSavedStateRegistryOwner : یک رابط برنامه‌نویسی کاربردی جدید ViewTreeSavedStateRegistryOwner.get(View) به شما امکان می‌دهد تا SavedStateRegistry موجود در یک نمونه View را بازیابی کنید. برای پر کردن صحیح این رابط، باید به Activity 1.2.0 ، Fragment 1.3.0 و AppCompat 1.3.0-alpha01 یا بالاتر ارتقا دهید.
  • مصنوع savedstate-ktx : مصنوع جدید savedstate-ktx به همراه یک افزونه‌ی کاتلین findViewTreeSavedStateRegistryOwner() برای کار با ViewTreeSavedStateRegistryOwner اضافه شده است.

نسخه ۱.۱.۰-rc01

۱۶ دسامبر ۲۰۲۰

androidx.savedstate:savedstate:1.1.0-rc01 و androidx.savedstate:savedstate-ktx:1.1.0-rc01 بدون هیچ تغییری از زمان انتشار 1.1.0-beta01 منتشر شده‌اند. نسخه ۱.۱.۰-rc01 شامل این کامیت‌ها است.

نسخه ۱.۱.۰-بتا۰۱

۱ اکتبر ۲۰۲۰

androidx.savedstate:savedstate:1.1.0-beta01 و androidx.savedstate:savedstate-ktx:1.1.0-beta01 بدون هیچ تغییری از زمان 1.1.0-alpha01 منتشر شده‌اند. نسخه 1.1.0-beta01 شامل این کامیت‌ها است.

نسخه ۱.۱.۰-آلفا۰۱

۲۰ مه ۲۰۲۰

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() برای کار با ViewTreeSavedStateRegistryOwner اضافه شده است. ( aosp/1299434 )

نسخه ۱.۰.۰

نسخه ۱.۰.۰

۵ سپتامبر ۲۰۱۹

androidx.savedstate:savedstate:1.0.0 منتشر شد. کامیت‌های موجود در این نسخه را می‌توانید اینجا پیدا کنید.

ویژگی‌های اصلی SavedState 1.0.0

androidx.savedstate به نسخه پایدار ارتقا یافت. این مجموعه‌ای از APIها است که به توسعه‌دهندگان اجازه می‌دهد کامپوننت‌ها را به فرآیند restore / saveInstanceState اضافه کنند. نقطه ورودی اصلی API، SavedStateRegistry است که راهی برای بازیابی حالت‌های ذخیره شده قبلی با استفاده از consumeRestoredStateForKey فراهم می‌کند و یک فراخوانی برای registerSavedStateProvider ثبت می‌کند تا پس از درخواست سیستم، حالت ذخیره شده را ارائه دهد.

نسخه ۱.۰.۰-rc01

۲ ژوئیه ۲۰۱۹

androidx.savedstate:savedstate:1.0.0-rc01 منتشر شد. کامیت‌های موجود در این نسخه را می‌توانید اینجا پیدا کنید.

رفع اشکالات

  • اصلاح قانون نادرست پروگارد ( b/132655499 )

نسخه ۱.۰.۰-بتا۰۱

۷ مه ۲۰۱۹

androidx.savedstate:savedstate:1.0.0-beta01 منتشر شد. کامیت‌های موجود در این نسخه را می‌توانید اینجا پیدا کنید.

نسخه ۱.۰.۰-آلفا۰۲

۱۳ مارس ۲۰۱۹

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 هنگام راه‌اندازی مجدد کامپوننت مالک اجرا می‌شود.

تغییرات API

  • ژنریک‌ها از SavedStateRegistry<T> حذف شدند
  • AbstractSavedStateRegistry و BundlableSavedStateRegistry حذف شده‌اند، به جای آن از SavedStateRegistry ساده استفاده کنید.
  • BundleSavedStateRegistryOwner به SavedStateRegistryOwner تغییر نام داده است.

نسخه ۱.۰.۰-آلفا۰۱

۱۷ دسامبر ۲۰۱۸

این اولین نسخه از SavedState است.

ویژگی‌های جدید

androidx.savedstate مجموعه‌ای جدید از APIهای آلفا است که به توسعه‌دهندگان اجازه می‌دهد کامپوننت‌ها را به فرآیند restore / saveInstanceState اضافه کنند. نقطه ورودی اصلی API، SavedStateRegistry<T> است که راهی برای بازیابی وضعیت ذخیره‌شده قبلی از طریق consumeRestoredStateForKey و ثبت یک فراخوانی مجدد به registerSavedStateProvider برای ارائه وضعیت ذخیره‌شده پس از درخواست سیستم، فراهم می‌کند.

،

ذخیره شده

کامپوننت‌های قابل اتصالی بنویسید که وضعیت رابط کاربری را هنگام از کار افتادن یک فرآیند ذخیره کنند و هنگام راه‌اندازی مجدد فرآیند، آن را بازیابی کنند.
آخرین به‌روزرسانی انتشار پایدار کاندیدای انتشار انتشار بتا انتشار آلفا
۵ نوامبر ۲۰۲۵ ۱.۴.۰ - - -

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

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

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

شیار

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

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

کاتلین

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

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

برای اطلاعات بیشتر در مورد وابستگی‌ها، به «افزودن وابستگی‌های ساخت» مراجعه کنید.

بازخورد

بازخورد شما به بهبود Jetpack کمک می‌کند. اگر مشکلات جدیدی کشف کردید یا ایده‌هایی برای بهبود این کتابخانه دارید، به ما اطلاع دهید. لطفاً قبل از ایجاد یک کتابخانه جدید، نگاهی به مشکلات موجود در این کتابخانه بیندازید. می‌توانید با کلیک بر روی دکمه ستاره، رأی خود را به یک مشکل موجود اضافه کنید.

ایجاد یک مسئله جدید

برای اطلاعات بیشتر به مستندات ردیاب مشکل مراجعه کنید.

نسخه ۱.۴

نسخه ۱.۴.۰

۵ نوامبر ۲۰۲۵

androidx.savedstate:savedstate-*:1.4.0 منتشر شد. نسخه ۱.۴.۰ شامل این کامیت‌ها است.

نسخه ۱.۴.۰-rc01

۲۲ اکتبر ۲۰۲۵

androidx.savedstate:savedstate-*:1.4.0-rc01 بدون هیچ تغییری از زمان انتشار نسخه ۱.۴.۰-beta01 منتشر شده است. نسخه ۱.۴.۰-rc01 شامل این کامیت‌ها است.

نسخه ۱.۴.۰-بتا۰۱

۸ اکتبر ۲۰۲۵

androidx.savedstate:savedstate-*:1.4.0-beta01 بدون هیچ تغییر قابل توجهی از آخرین نسخه آلفا منتشر شده است. نسخه 1.4.0-beta01 شامل این کامیت‌ها است.

نسخه ۱.۴.۰-آلفا۰۳

۲۷ آگوست ۲۰۲۵

androidx.savedstate:savedstate-*:1.4.0-alpha03 منتشر شد. نسخه 1.4.0-alpha03 شامل این کامیت‌ها است.

تغییرات API

  • پشتیبانی از انواع تهی‌پذیر (nullable) در encodeToSavedState و decodeFromSavedState اضافه شد. ( I79062 ، b/439527454 )
  • به‌روزرسانی Compose به نسخه ۱.۹.۰ ( I2b9de )

نسخه ۱.۴.۰-آلفا۰۲

۱۳ آگوست ۲۰۲۵

androidx.savedstate:savedstate-*:1.4.0-alpha02 منتشر شد. نسخه 1.4.0-alpha02 شامل این کامیت‌ها است.

نسخه ۱.۴.۰-آلفا۰۱

۳۰ ژوئیه ۲۰۲۵

androidx.savedstate:savedstate-*:1.4.0-alpha01 منتشر شد. نسخه 1.4.0-alpha01 شامل این کامیت‌ها است.

تغییرات API

  • پشتیبانی بومی برای انواع تهی‌پذیر در SavedStateRegistryOwner.saved اضافه شد که ذخیره و بازیابی ویژگی‌های تهی‌پذیر را ساده می‌کند. ( Ia632 ، b/421325690 )

نسخه ۱.۳

نسخه ۱.۳.۳

۱۷ سپتامبر ۲۰۲۵

androidx.savedstate:savedstate-*:1.3.3 منتشر شد. نسخه ۱.۳.۳ شامل این کامیت‌ها است.

رفع اشکالات

  • خطایی که باعث می‌شد افزونه Compose Compiler اعمال نشود و باعث خرابی مصنوعات SavedState KMP شود، برطرف شد. ( Id2290 ، b/443965665 )

نسخه ۱.۳.۲

۲۷ آگوست ۲۰۲۵

androidx.savedstate:savedstate-*:1.3.2 منتشر شد. نسخه ۱.۳.۲ شامل این کامیت‌ها است.

ویژگی‌های جدید

  • اهداف جدید Kotlin Multiplatform (KMP) را به مصنوع SavedState *-compose اضافه کنید. Lifecycle اکنون در مجموع از پلتفرم‌های زیر پشتیبانی می‌کند: JVM (اندروید و دسکتاپ)، Native (لینوکس، iOS، watchOS، macOS، MinGW) و وب (جاوااسکریپت، WasmJS). ( /Idcf26 )

نسخه ۱.۳.۱

۱۶ ژوئیه ۲۰۲۵

androidx.savedstate:savedstate-*:1.3.1 منتشر شد. نسخه ۱.۳.۱ شامل این کامیت‌ها است.

رفع اشکالات

  • تمام اهداف KMP پشتیبانی شده توسط حاشیه‌نویسی‌ها را به مصنوعات SavedState اضافه کنید.
  • اهداف جدید Kotlin Multiplatform (KMP) به مصنوعات SavedState اضافه شد. SavedState اکنون در مجموع از پلتفرم‌های زیر پشتیبانی می‌کند: JVM (اندروید و دسکتاپ)، Native (لینوکس، iOS، watchOS، macOS، MinGW) و وب (جاوااسکریپت، WasmJS). توجه داشته باشید که هیچ هدف KMP جدیدی به مصنوعات *-compose اضافه نشده است، زیرا این امر به انتشار پایدار Compose 1.9 بستگی دارد. ( I062f4 ).

نسخه ۱.۳.۰

۷ مه ۲۰۲۵

androidx.savedstate:savedstate-*:1.3.0 منتشر شد. نسخه ۱.۳.۰ شامل این کامیت‌ها است.

تغییرات مهم از زمان ۱.۲.۰

  • LocalSavedStateRegistryOwner از Compose UI به ماژول جدید savedstate-compose منتقل شده است تا APIهای کمکی مبتنی بر Compose آن بتوانند خارج از Compose UI نیز استفاده شوند. این ماژول باید همیشه هنگام استفاده از Compose UI 1.9.0-alpha02 و بالاتر استفاده شود، اما با نسخه‌های قبلی سازگار است به طوری که می‌توان از آن با تمام نسخه‌های Compose استفاده کرد.
  • افزونه‌های کاتلین savedstate-ktx اکنون به ماژول پایه savedstate منتقل شده‌اند.
  • نمونه‌های SavedStateRegistryOwner که از طریق findViewTreeSavedStateRegistryOwner بازیابی می‌شوند، اکنون می‌توانند از طریق والدهای مجزای یک نما، مانند ViewOverlay ، حل شوند. برای اطلاعات بیشتر در مورد والدهای مجزای نما، به یادداشت‌های انتشار core یا مستندات موجود در ViewTree.setViewTreeDisjointParent مراجعه کنید.

کاتلین چندسکویی

  • ماژول SavedState اکنون با KMP سازگار است. پلتفرم‌های پشتیبانی‌شده اکنون شامل اندروید، iOS، لینوکس، مک و محیط‌های دسکتاپ JVM هستند.
  • نوع داده‌ی غیرشفاف SavedState به عنوان یک انتزاع معرفی کنید تا روشی سازگار برای ذخیره و بازیابی وضعیت برنامه در KMP فراهم شود. این شامل یک SavedStateReader و SavedStateWriter برای تغییر وضعیتی است که باید ذخیره شود. در اندروید، SavedState یک نام مستعار برای Bundle است که سازگاری دودویی را تضمین می‌کند و مهاجرت APIهای موجود به یک مجموعه منبع مشترک را تسهیل می‌کند. در سایر پلتفرم‌ها، 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

  • SavedState اکنون از پشتیبانی KotlinX Serialization پشتیبانی می‌کند. می‌توانید یک کلاس که با @Serializable حاشیه‌نویسی شده است را با استفاده از متدهای encodeToSavedState و decodeFromSavedState به یک SavedState تبدیل کنید. SavedState برگردانده شده یک Bundle معمولی در اندروید است و می‌تواند توسط هر API که 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 ، یک نماینده‌ی ویژگی lazy، را گنجانده‌ایم تا ذخیره‌ی کلاس‌های @Serializable در یک SavedStateRegistryOwner (مثلاً ComponentActivity ، Fragment و غیره) را آسان کنیم و این کلاس‌ها را به طور خودکار در طول مرگ و بازسازی فرآیند بازیابی کنیم. لطفاً توجه داشته باشید که نماینده‌ی saved تنبل است و تا زمانی که به آن دسترسی پیدا نشود، لامبدا 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 اضافه شده است.

نسخه ۱.۳.۰-rc01

۲۳ آوریل ۲۰۲۵

androidx.savedstate:savedstate-*:1.3.0-rc01 منتشر شد. نسخه 1.3.0-rc01 شامل این کامیت‌ها است.

نسخه ۱.۳.۰-بتا۰۱

۹ آوریل ۲۰۲۵

androidx.savedstate:savedstate-*:1.3.0-beta01 منتشر شد. نسخه 1.3.0-beta01 شامل این کامیت‌ها است.

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

  • این کتابخانه اکنون سطح زبان Kotlin 2.0 را هدف قرار می‌دهد و به KGP 2.0.0 یا جدیدتر نیاز دارد. ( Idb6b5 )

نسخه ۱.۳.۰-آلفا۱۱

۲۶ مارس ۲۰۲۵

androidx.savedstate:savedstate-*:1.3.0-alpha11 بدون هیچ تغییر عمومی قابل توجهی منتشر شده است. نسخه 1.3.0-alpha11 شامل این کامیت‌ها است.

نسخه ۱.۳.۰-آلفا۱۰

۱۲ مارس ۲۰۲۵

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 )

تغییرات API

  • تابع getOrElse از SavedStateReader حذف کنید و از getOrNull() ?: else() کنید. ( I87317 , b/399820614 )
  • اصلاحگر inline را از متدهای SavedStateReader و SavedStateWriter حذف کنید. ( If2a02 , b/399820614 )
  • حذف سریالایزرهای لیست و آرایه داخلی مخصوص اندروید از API عمومی ( Ida293 )
  • جایگزینی SparseParcelableArraySerializer با SparseArraySerializer ( I91de8 )
  • با پرتاب کردن (throwing) در مواقعی که نوع مقدار با نوع بازگشتی مطابقت ندارد، باعث شوید که همه SavedStateReader.get به طور مداوم رفتار کنند ( I78c4a ، b/399317598 ).
  • نام SavedState*Delegates را به SavedState*Delegate تغییر دهید. ( I8589b ، b/399629301 )
  • نام SavedStateConfig را به SavedStateConfiguration تغییر دهید. ( I043a5 ، b/399629301 )

نسخه ۱.۳.۰-آلفا۰۹

۲۶ فوریه ۲۰۲۵

androidx.savedstate:savedstate-*:1.3.0-alpha09 منتشر شد. نسخه 1.3.0-alpha09 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • برای انواع داخلی، قابلیت بازگشت به عقب اضافه کنید و اطمینان حاصل کنید که همه انواع پشتیبانی شده توسط Bundle می‌توانند به طور پیش‌فرض با encodeAsSavedState / decodeFromSavedState یا برای ویژگی‌های کلاس‌های @Serializable ، از طریق حاشیه‌نویسی @Contextual استفاده شوند. ( Ic01d2 )
  • پشتیبانی از classDiscriminator و classDiscriminatorMode را روی SavedStateConfig لحاظ کنید. ( I69b66 , b/395104517 )

تغییرات API

  • پارامتر SavedStateConfig را به delegate های saved() اضافه کنید ( I39b3a )
  • اشیاء سینگلتون سریالایزر داخلی می‌سازد ( Ifeee4 )
  • ویژگی‌های SavedStateConfig اکنون عمومی هستند و به ماژول‌های دیگر امکان می‌دهند از این پیکربندی‌ها استفاده کنند. ( Ie5f49 , b/378897438 )
  • پشتیبانی از @Serializer(with = ...) برای MutableStateFlowSerializer و MutableStateSerializer ( I90953 )
  • افزودن contentDeepToString به SavedStateReader ( I14d10 )

نسخه ۱.۳.۰-آلفا۰۸

۱۲ فوریه ۲۰۲۵

androidx.savedstate:savedstate-*:1.3.0-alpha08 منتشر شد. نسخه 1.3.0-alpha08 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • MutableStateSerializer از lifecycle-viewmodel-compose به savedstate-compose منتقل کنید، که به شما امکان می‌دهد از APIهای سریال‌سازی SavedState با MutableState مربوط به Compose استفاده کنید. ( I4f690 ، b/378895074 )

تغییرات API

  • یک تابع factory برای ایجاد SavedState از یک SavedState موجود اضافه کنید. ( I39f9a )
  • پشتیبانی از Array<SavedState> و List<SavedState> در androidx.savedstate اضافه می‌کند. ( Idd8a5 )
  • پارامتر اختیاری SavedStateConfig را به رمزگذاری/رمزگشایی SavedState اضافه کنید ( I6c4c0 )

نسخه ۱.۳.۰-آلفا۰۷

۲۹ ژانویه ۲۰۲۵

androidx.savedstate:savedstate-*:1.3.0-alpha07 منتشر شد. نسخه 1.3.0-alpha07 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • برای سریال‌سازی kotlinx.coroutines.flow.MutableStateFlow ، MutableStateFlowSerializer اضافه کنید. ( I6a892 ، b/378895070 )

تغییرات API

  • توابع نماینده‌ی SavedStateRegistryOwner.saved() که سربارگذاری شده‌اند را با پارامترهای پیش‌فرض ( Icd1c1 ) جایگزین کنید.
  • Make JavaSerializableSerializer and ParcelableSerializer abstract ( I268f6 )
  • Remove generic T : CharSequence from CharSequenceSerializer ( Ib40bd )

Version 1.3.0-alpha06

۱۱ دسامبر ۲۰۲۴

androidx.savedstate:savedstate-*:1.3.0-alpha06 is released. Version 1.3.0-alpha06 contains these commits .

ویژگی‌های جدید

  • SavedState KMP now supports: IBinder , Size , SizeF , Array<Parcelable> , SparseArray<Parcelable> and Serializable (Android). ( I1ba94 , b/334076622 )
  • Add KSerializer instances that can be used to encode/decode Java and Android types supported by Bundle by marking the relevant field in your class with @Serializable(with = ParcelableSerializer::class) . ( I8c10f , I28caf , b/376026712 )
  • SavedStateRegistryOwner instances retrieved via findViewTreeSavedStateRegistryOwner can now be resolved through disjoint parents of a view, such as a ViewOverlay . See the release notes of core or the documentation in ViewTree.setViewTreeDisjointParent for more information on disjoint view parents. ( Iccb33 )

API Changes

  • Make the namings and package organization more consistent with SavedStateRegistryOwnerDelegate ( I8c135 , b/376026744 )

Version 1.3.0-alpha05

۱۳ نوامبر ۲۰۲۴

androidx.savedstate:savedstate-*:1.3.0-alpha05 is released. Version 1.3.0-alpha05 contains these commits .

KotlinX Serialization Support

  • SavedState now includes KotlinX Serialization support. You can convert a class annotated with @Serializable to a SavedState using the methods encodeToSavedState and decodeFromSavedState . The returned SavedState is a regular Bundle on Android and can be used by any API that accepts a 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)
    }
    
  • We also have included saved , a lazy property delegate, to make it easy to store @Serializable classes in a SavedStateRegistryOwner (eg, ComponentActivity , Fragment , etc.) and have those classes automatically be restored across process death and recreation. Please note the saved delegate is lazy and will not call the init lambda or save anything into the SavedStateRegistry until it is accessed. ( 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")
        }
    }
    
  • There is a similar saved property delegate for SavedStateHandle added in Lifecycle 2.9.0-alpha07 .

API Changes

  • Add toMap to SavedState , allowing any SavedState to be converted to a regular Map (shallow copy). ( I487b9 , b/334076622 )
  • SavedState KMP now supports arrays. ( Ic0552 , b/334076622 )

Version 1.3.0-alpha04

۳۰ اکتبر ۲۰۲۴

androidx.savedstate:savedstate-*:1.3.0-alpha04 is released. Version 1.3.0-alpha04 contains these commits .

API Changes

Version 1.3.0-alpha03

۱۶ اکتبر ۲۰۲۴

androidx.savedstate:savedstate-*:1.3.0-alpha03 is released with no notable changes. Version 1.3.0-alpha03 contains these commits .

Version 1.3.0-alpha02

۲ اکتبر ۲۰۲۴

androidx.savedstate:savedstate-*:1.3.0-alpha02 is released. Version 1.3.0-alpha02 contains these commits .

کاتلین چندسکویی

  • The SavedState module is now KMP compatible. Supported platforms now include Android, iOS, Linux, Mac, and JVM desktop environments. ( I26305 , b/334076622 )

ویژگی‌های جدید

  • Introduce SavedState opaque type as an abstraction to provide a consistent way to save and restore application state in KMP. It includes a SavedStateReader and SavedStateWriter for modifying the state to be saved. On Android, SavedState is a type alias for Bundle , ensuring binary compatibility and facilitating the migration of existing APIs to a common source set. On other platforms, SavedState is a Map<String, Any> instance. ( 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 Changes

  • SavedStateRegistry and SavedStateRegistryController are now KMP compatible. ( Id7bb8 , b/334076622 )
  • SavedState , SavedStateWriter and SavedStateReader are now KMP compatible. ( I26305 , b/334076622 )

Version 1.3.0-alpha01

۷ آگوست ۲۰۲۴

androidx.savedstate:savedstate:1.3.0-alpha01 and androidx.savedstate:savedstate-ktx:1.3.0-alpha01 are released. Version 1.3.0-alpha01 contains these commits .

API Changes

  • The savedstate-ktx kotlin extensions have now been moved to the base savedstate module. ( I1cc18 , b/274803094 )

توجه داشته باشید

  • Update compileSdk to 35 ( 5dc41be )

نسخه ۱.۲.۱

نسخه ۱.۲.۱

۲۲ مارس ۲۰۲۳

androidx.savedstate:savedstate:1.2.1 and androidx.savedstate:savedstate-ktx:1.2.1 are released. Version 1.2.1 contains these commits.

Dependency Updates

نسخه ۱.۲.۰

نسخه ۱.۲.۰

۲۹ ژوئن ۲۰۲۲

androidx.savedstate:savedstate:1.2.0 and androidx.savedstate:savedstate-ktx:1.2.0 are released. Version 1.2.0 contains these commits.

Important changes since 1.1.0

  • SavedStateRegistryController now allows early attachment of the SavedStateRegistry via performAttach() .
  • You can now retrieve a previously registered SavedStateProvider from a SavedStateRegistry via getSavedStateProvider() .
  • The SavedState library has been rewritten in Kotlin.
    • For SavedStateRegistryOwner , this is a source incompatible change for those classes written in Kotlin - you must now override the savedStateRegistry property rather than implement the previous getSavedStateRegistry() function.
    • For ViewTreeSavedStateRegistryOwner , this is a source incompatible change for those classes written in Kotlin - you must now directly import and use the Kotlin extension methods on View of androidx.savedstate.setViewTreeSavedStateRegistryOwner and androidx.savedstate.findViewTreeSavedStateRegistryOwner to set and find a previously set owner. This replaces the savedstate-ktx API of findViewTreeSavedStateRegistryOwner .

تغییرات رفتاری

  • SavedStateRegistry no longer saves an empty Bundle if there is no state to save.

Version 1.2.0-rc01

۱۱ مه ۲۰۲۲

androidx.savedstate:savedstate:1.2.0-rc01 and androidx.savedstate:savedstate-ktx:1.2.0-rc01 are released. Version 1.2.0-rc01 contains these commits.

Documentation Changes

  • The SavedStateRegistryOwner Kdocs have been updated to clarify the responsibilities and contract that the owner has on how it should implement the interface or when they should call the methods on SavedStateRegistryController . ( Iefc95 , b/228887344 )

Version 1.2.0-beta01

۲۰ آوریل ۲۰۲۲

androidx.savedstate:savedstate:1.2.0-beta01 and androidx.savedstate:savedstate-ktx:1.2.0-beta01 are released. Version 1.2.0-beta01 contains these commits.

API Changes

  • The SavedStateRegistry and ViewTreeSavedStateRegistryOwner classes have been rewritten in Kotlin. For ViewTreeSavedStateRegistryOwner , this is a source incompatible change for those classes written in Kotlin - you must now directly import and use the Kotlin extension methods on View of androidx.savedstate.setViewTreeSavedStateRegistryOwner and androidx.savedstate.findViewTreeSavedStateRegistryOwner to set and find a previously set owner. This replaces the savedstate-ktx API of findViewTreeSavedStateRegistryOwner . This is binary compatible and remains source compatible for implementations written in the Java programming language. ( b/220191285 )

Version 1.2.0-alpha02

۶ آوریل ۲۰۲۲

androidx.savedstate:savedstate:1.2.0-alpha02 and androidx.savedstate:savedstate-ktx:1.2.0-alpha02 are released. Version 1.2.0-alpha02 contains these commits.

ویژگی‌های جدید

  • You can now retrieve a previously registered SavedStateProvider from a SavedStateRegistry via getSavedStateProvider() . ( I7ea47 , b/215406268 )

API Changes

  • The SavedStateRegistryOwner , SavedStateRegistryController , and Recreator classes have been rewritten in Kotlin. For SavedStateRegistryOwner , this is a source incompatible change for those classes written in Kotlin - you must now override the savedStateRegistry property rather than implement the previous getSavedStateRegistry() function. This is binary compatible and source compatible for implementations written in the Java programming language. ( b/220191285 )

Version 1.2.0-alpha01

۲۶ ژانویه ۲۰۲۲

androidx.savedstate:savedstate:1.2.0-alpha01 and androidx.savedstate:savedstate-ktx:1.2.0-alpha01 are released. Version 1.2.0-alpha01 contains these commits.

ویژگی‌های جدید

  • SavedStateRegistryController now allows early attachment of the SavedStateRegistry via performAttach() . ( Ice4bf )

تغییرات رفتاری

Version 1.1.0

Version 1.1.0

۱۰ فوریه ۲۰۲۱

androidx.savedstate:savedstate:1.1.0 and androidx.savedstate:savedstate-ktx:1.1.0 are released. Version 1.1.0 contains these commits.

Major changes since 1.0.0

  • ViewTreeSavedStateRegistryOwner API : A new ViewTreeSavedStateRegistryOwner.get(View) API allows you to retrieve the containing SavedStateRegistry given a View instance. You must upgrade to Activity 1.2.0 , Fragment 1.3.0 , and AppCompat 1.3.0-alpha01 or higher to populate this correctly.
  • savedstate-ktx artifact : The new savedstate-ktx artifact has been added with a findViewTreeSavedStateRegistryOwner() Kotlin extension for working with ViewTreeSavedStateRegistryOwner .

Version 1.1.0-rc01

۱۶ دسامبر ۲۰۲۰

androidx.savedstate:savedstate:1.1.0-rc01 and androidx.savedstate:savedstate-ktx:1.1.0-rc01 are released with no changes since 1.1.0-beta01 . Version 1.1.0-rc01 contains these commits.

Version 1.1.0-beta01

۱ اکتبر ۲۰۲۰

androidx.savedstate:savedstate:1.1.0-beta01 and androidx.savedstate:savedstate-ktx:1.1.0-beta01 are released with no changes since 1.1.0-alpha01 . Version 1.1.0-beta01 contains these commits.

Version 1.1.0-alpha01

۲۰ مه ۲۰۲۰

androidx.savedstate:savedstate:1.1.0-alpha01 and androidx.savedstate:savedstate-ktx:1.1.0-alpha01 are released. Version 1.1.0-alpha01 contains these commits.

ویژگی‌های جدید

نسخه ۱.۰.۰

نسخه ۱.۰.۰

۵ سپتامبر ۲۰۱۹

androidx.savedstate:savedstate:1.0.0 is released. The commits included in this version can be found here .

Major features of SavedState 1.0.0

androidx.savedstate graduated to a stable release. This is a set of APIs that allow developers to plugin components into the restore / saveInstanceState process. The main entry point of the API is SavedStateRegistry , which provides a way to retrieve previously saved states using consumeRestoredStateForKey and register a callback to registerSavedStateProvider to provide a saved state once system requests it.

Version 1.0.0-rc01

۲ ژوئیه ۲۰۱۹

androidx.savedstate:savedstate:1.0.0-rc01 is released. The commits included in this version can be found here .

رفع اشکالات

Version 1.0.0-beta01

May 7, 2019

androidx.savedstate:savedstate:1.0.0-beta01 is released. The commits included in this version can be found here .

Version 1.0.0-alpha02

۱۳ مارس ۲۰۱۹

androidx.savedstate:savedstate:1.0.0-alpha02 is released. androidx.savedstate:savedstate combines artifacts androidx.savedstate:savedstate-bundle and androidx.savedstate:savedstate-common into one artifact, because it was decided to simplify savedstate infrastructure and remove generics from SavedStateRegistry . Thus, there is no need for separate modules.

The full list of commits included in this version can be found here .

ویژگی‌های جدید

  • SavedStateRegistry.runOnNextRecreaction(Class<? extends AutoRecreated> clazz ) was added. The given class will be instantiated and the method AutoRecreated.onRecreated will be run when the owning component restarted.

API changes

  • Generics removed from SavedStateRegistry<T>
  • AbstractSavedStateRegistry & BundlableSavedStateRegistry are removed, use simple SavedStateRegistry instead
  • BundleSavedStateRegistryOwner is renamed to SavedStateRegistryOwner

Version 1.0.0-alpha01

۱۷ دسامبر ۲۰۱۸

This is the first release of SavedState .

ویژگی‌های جدید

androidx.savedstate is a new set of alpha APIs that allow developers to plugin components to the restore / saveInstanceState process. The main entry point of the API is SavedStateRegistry<T> , which provides a way to retrieve previously savedstate via consumeRestoredStateForKey and register a callback to registerSavedStateProvider to provide a savedstate once system requests it.